Tôi đang sử dụng UIManagedDocument để quản lý dữ liệu của mình. Tôi tạo ra các mô hình và sử dụng nó, và tất cả mọi thứ có vẻ là làm việc, nhưng những thay đổi của tôi không được viết trở lại cửa hàng SQLite.UIManagedTài liệu không lưu
Tài liệu dành cho UIManagedDocument cho biết rằng lưu trữ tự động nên lưu giữ dữ liệu vào cơ sở dữ liệu, nhưng điều đó dường như không xảy ra.
NSManagedObjectContext *moc = [doc managedObjectContext];
NSError *error = nil;
MyItem *itemToAdd = (MyItems *)[moc existingObjectWithID:(NSManagedObjectID *)itemsID error:&error];
Điều này tìm nạp đối tượng tôi muốn thêm (và thành công).
[itemContainer addItemsObject:itemToAdd];
[doc updateChangeCount:UIDocumentChangeDone];
Thao tác này thêm mục vào bộ sưu tập các mục trong đối tượng khác và sau đó cho tài liệu biết rằng tôi đã thực hiện thay đổi.
Tôi mong đợi một thời gian ngắn sau này để xem thay đổi được ghi vào kho dữ liệu Core, nhưng xem trong Dụng cụ, tôi thấy rằng nó không bao giờ xảy ra.
Bộ sưu tập các mặt hàng là một NSOrderedSet, và vì ý kiến về mục này:
Exception thrown in NSOrderedSet generated accessors
Tôi đã thêm một addItemsObject: đến đối tượng chứa bộ sưu tập:
- (void)addItemsObject:(MyItem *)value
{
NSMutableOrderedSet* tempSet = [NSMutableOrderedSet orderedSetWithOrderedSet:self.items];
[tempSet addObject:value];
self.items = tempSet;
}
Có lẽ đã xảy ra sự cố với dữ liệu cốt lõi được thông báo rằng các bộ sưu tập các mặt hàng đã thay đổi, nhưng tôi không thấy như thế nào.
Với công cụ, tôi có thể thấy dữ liệu đó đang được ghi vào Cache dữ liệu lõi. Nhưng nó không hiển thị trong công cụ Lưu dữ liệu cốt lõi và nếu tôi giết và khởi động lại ứng dụng, các thay đổi của tôi sẽ biến mất. – stevex
Tôi đã tìm thấy sự cố của mình. Hóa ra tôi đã gặp lỗi với đối tượng mà tôi đang cố gắng thêm vào - tôi đã bỏ lỡ một thuộc tính bắt buộc - và không có handleError ghi đè nào thì không có dấu hiệu nào cho thấy có vấn đề. Viết blog về nó ở đây: http://blog.stevex.net/2011/12/uimanageddocument-autosave-troubleshooting/ – stevex