我正在使用 UIManagedDocument 来管理我的数据。我创建模型并使用它,一切似乎都在工作,但我的更改并没有被写回 SQLite 存储。
UIManagedDocument 的文档说自动保存应该负责将数据持久化到数据库中,但这似乎没有发生。
NSManagedObjectContext *moc = [doc managedObjectContext];
NSError *error = nil;
MyItem *itemToAdd = (MyItems *)[moc existingObjectWithID:(NSManagedObjectID *)itemsID error:&error];
这会获取我想要添加的对象(并成功)。
[itemContainer addItemsObject:itemToAdd];
[doc updateChangeCount:UIDocumentChangeDone];
这会将项目添加到另一个对象的项目集合中,然后告诉文档我已完成更改。
我预计在此之后不久会看到写入核心数据存储的更改,但是在 Instruments 中观察,我发现它永远不会发生。
items 集合是一个 NSOrderedSet,并且由于对此项目的评论:
我添加了一个 addItemsObject: 到包含集合的对象:
- (void)addItemsObject:(MyItem *)value
{
NSMutableOrderedSet* tempSet = [NSMutableOrderedSet orderedSetWithOrderedSet:self.items];
[tempSet addObject:value];
self.items = tempSet;
}
也许 Core Data 被告知项目集合已更改出现问题,但我不知道如何。