0

我正在使用 coredata 为我的 iPhone 创建一个应用程序。

我有一个带有对象的视图控制器,我想将该对象保存到我的收藏夹视图控制器中。通过单击收藏夹按钮,我希望将对象保存到 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

您可能已经更改了表格中的某些内容。如果这是真的,请尝试使用表的原始值Z_METADATA (Z_VERSION, Z_UUID, Z_PLIST), Z_PRIMARYKEY (Z_ENT)...

于 2011-08-23T15:23:35.000 回答
0

我猜你有一个 UI 元素,比如一个表格,它会在 UI 更改时激活提取。例如,如果您有一个 fetched results 控制器,表格的任何滚动都可以激活 fetched results 控制器的 fetch。

在对集合进行迭代时,您不能对集合进行变异,因为在迭代过程中迭代计数会发生变化。一个 fetch 遍历与其实体和谓词匹配的对象集合。如果在 fetch 工作时插入对象,则会出现错误。

通常你会在多个线程中看到这个问题,但我认为 UI 可能会在正确的情况下触发问题。

于 2010-07-29T00:16:34.287 回答