0

coredataを使用してiPhone用のアプリを作成しています。

そのオブジェクトをFavoriteViewControllerに保存したいオブジェクトを持つViewControllerがあります。お気に入りのボタンをクリックして、オブジェクトをmanagedObjectContextに保存したいのですが、次のエラーが発生します。

キャッチされなかった例外「NSInternalInconsistencyException」が原因でアプリを終了しています。理由:「フェッチがすでに進行中の状態で別の操作を実行しようとしました」。*

私のコード:

// Step 1: Create Object
Favorite * newFavorite = (Favorite*)[NSEntityDescription insertNewObjectForEntityForName:@"Favorite" inManagedObjectContext:managedObjectContext];

// Step 2: Set Properties       
    newFavorite.name = @"Company";

    NSLog(@"%@",newFavorite);

// Step 3: Save Object

    NSError *error = nil;
    if (![newFavorite.managedObjectContext save:&error]) { // this is where the program crash
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }

何が間違っているのかわかりません。

4

2 に答える 2

0

UI が変更されたときにフェッチを有効にするテーブルなどの UI 要素があると思います。たとえば、フェッチされた結果コントローラがある場合、テーブルをスクロールすると、フェッチされた結果コントローラのフェッチがアクティブになります。

反復の進行中に反復の回数が変化するため、コレクションの反復中にコレクションを変更することはできません。フェッチは、エンティティと述語に一致するオブジェクトのコレクションを反復処理します。フェッチ中にオブジェクトを挿入すると、エラーが発生します。

通常、この問題は複数のスレッドで発生しますが、UI が適切な状況で問題を引き起こす可能性があると思います。

于 2010-07-29T00:16:34.287 に答える
0

テーブルの何かを変更した可能性があります。これが当てはまる場合は、テーブルの元の値を使用してみてくださいZ_METADATA (Z_VERSION, Z_UUID, Z_PLIST), Z_PRIMARYKEY (Z_ENT)...

于 2011-08-23T15:23:35.000 に答える