【发布时间】:2013-09-05 00:27:11
【问题描述】:
当我在 iCloud 中创建一个 sqlite 核心数据存储并在一台设备上播种时,它运行良好并且有大约 6,000 条记录。当我在第二台设备上创建存储时,它会同步,但最终只有大约 4,000 条记录(可能来自事务日志)。我响应 NSPersistentStoreDidImportUbiquitousContentChangesNotification 的同步代码读取...
NSUndoManager * undoManager = [context undoManager];
[undoManager disableUndoRegistration];
[context mergeChangesFromContextDidSaveNotification:info];
[context processPendingChanges];
[undoManager enableUndoRegistration];
但是,当我插入调试语句时...
NSSet *updatedObjects = [[info userInfo] objectForKey:NSUpdatedObjectsKey];
NSSet *deletedObjects = [[info userInfo] objectForKey:NSDeletedObjectsKey];
NSSet *insertedObjects = [[info userInfo] objectForKey:NSInsertedObjectsKey];
NSLog(@"found transaction log. updated %d, deleted %d, inserted %d", updatedObjects.count, deletedObjects.count, insertedObjects.count);
我得到了一个意外的“0”,但我知道它正在同步某些东西,因为数据库中有大约 4,000 条记录。
有人对这里可能发生的事情有任何建议吗?
谢谢 雷
【问题讨论】:
-
似乎在创建第二个数据库时,它使用事务日志来填充它,因为如果我删除事务日志,则数据库为空。但是,它似乎并没有填充所有记录。为了解决冲突,它甚至如何知道主键是什么?我不记得在数据模型中声明了主键。