1

いくつかのテーブル (正確には 25) に値を挿入しようとしていますが、1 つを除くすべてのテーブルにレコードを挿入できます。これは、1 つの属性のためです。その属性を削除すると、データをテーブルに追加しますが、その属性を追加してその値を設定しようとすると、EXC_BAD_ACCESS で終了します。

テーブルでも属性の名前を変更しようとしましたが、うまくいきませんでした。以下は私のコードです::

Ashes *ashesObj = (Ashes *)[NSEntityDescription insertNewObjectForEntityForName:@"Ashes" inManagedObjectContext:managedObjectContext];

[ashesObj setAshes_id:@""];
[ashesObj setArrangement_id:@"34"];
[ashesObj setCasket_order_date:@""];
[ashesObj setCasket_model:@""];
[ashesObj setCasket_supplier:@""];
//[ashesObj setAshes_address:@"N/A"];    (This one is causing problem)
[ashesObj setPostal_code:@"N/A"];
[ashesObj setName_client:@""];
[ashesObj setTelephone:@""];
[ashesObj setEmail:@""];

    NSError *error;

if (![managedObjectContext save:&error])
{
    NSLog(@"Problem saving: %@", [error localizedDescription]);
}
4

1 に答える 1

5

一般的なベスト プラクティスとして、EXEC_BAD_ACCESS に遭遇したときはいつでも、ツール Zombies を使用して Instruments からコード (および同じクリック/コード パス) をすぐに実行します。

コメントを外したコード行でこれを行います。アプリはクラッシュしますが、Instruments and Zombies は、クラッシュの原因となっている正確なコード行を示します (そこにあるものとは異なります)。

ほとんどの場合、誤ってオブジェクトを解放しすぎており、何らかの理由で、上記のコードを実行したときにのみ公開されています。

[製品] メニューを使用して XCode からインストゥルメントを起動し、[プロファイル] を選択します。Instruments が起動すると、使用するツールを求めるプロンプトが表示されます。Zombies を選択します。次に、シミュレーターが表示されたら、テスト ケースを実行して問題を再現します。クラッシュが発生すると、ゾンビからの情報が表示されます。

于 2012-11-02T22:33:19.157 に答える