Я использую 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];
Это добавляет элемент в коллекцию элементов в другом объекте, а затем сообщает документу, что я сделал изменения.
Вскоре после этого я ожидал бы, что изменения будут записаны в хранилище Core Data, но, наблюдая за инструментами, я вижу, что этого никогда не произойдет.
Коллекция элементов является набором NSOrderedSet, и из-за комментариев к этому элементу:
Исключение, создаваемое в сгенерированных NSOrderedSet средствах доступа
Я добавил addItemsObject: к объекту, который содержит коллекцию:
- (void)addItemsObject:(MyItem *)value
{
NSMutableOrderedSet* tempSet = [NSMutableOrderedSet orderedSetWithOrderedSet:self.items];
[tempSet addObject:value];
self.items = tempSet;
}
Возможно, что-то идет не так, когда Core Data получает информацию о том, что коллекция предметов изменилась, но я не понимаю, как.