UIManagedDocument没有保存

ste*_*vex 7 core-data objective-c ios5 uimanageddocument

我正在使用UIManagedDocument来管理我的数据.我创建模型并使用它,一切似乎都在工作,但我的更改不会被写回SQLite存储.

UIManagedDocument的文档说自动保存应该将数据持久化到数据库,但这似乎并没有发生.

    NSManagedObjectContext *moc = [doc managedObjectContext];
    NSError *error = nil;
    MyItem *itemToAdd = (MyItems *)[moc existingObjectWithID:(NSManagedObjectID *)itemsID error:&error];
Run Code Online (Sandbox Code Playgroud)

这将获取我想要添加的对象(并成功).

   [itemContainer addItemsObject:itemToAdd];
   [doc updateChangeCount:UIDocumentChangeDone];
Run Code Online (Sandbox Code Playgroud)

这会将项添加到另一个对象的项集合中,然后告诉文档我已完成更改.

我希望在此之后不久有一段时间可以看到写入Core Data商店的更改,但是在Instruments中观看,我发现它永远不会发生.

items集合是一个NSOrderedSet,由于对此项目的评论:

NSOrderedSet生成的访问器抛出异常

我已经为包含集合的对象添加了一个addItemsObject:

- (void)addItemsObject:(MyItem *)value 
{
    NSMutableOrderedSet* tempSet = [NSMutableOrderedSet orderedSetWithOrderedSet:self.items];
    [tempSet addObject:value];
    self.items = tempSet;
}
Run Code Online (Sandbox Code Playgroud)

也许出现了一些问题,Core Data被告知物品集合已经改变,但我不知道如何.

ste*_*vex 10

我发现了我的问题.原来我试图添加的对象有错误 - 我错过了必需的属性 - 并且没有覆盖handleError,没有迹象表明存在问题.

在此博客:http: //blog.stevex.net/2011/12/uimanageddocument-autosave-troubleshooting/