【发布时间】:2014-07-25 10:35:50
【问题描述】:
我完全不确定是什么问题。我正在创建一个新对象并将其插入到上下文中:
Object *object = [Object MR_createEntity];
object.name = @"blahblah";
NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext];
[context MR_saveToPersistentStoreAndWait];
根据docs,我不应该使用+ MR_contextForCurrentThread,所以我不这样做:
特别是,不要在任何 +[MagicalRecord saveWithBlock:…] 方法中使用 +MR_contextForCurrentThread — 返回的上下文可能不正确!
但是,如果我打开我的应用数据,我可以看到 3 个文件 (1)appname.sqlite、(2)appname.sqlite-shm 和 (3)appname.sqlite-wal。据我所知 2&3 只是缓存。当我打开带有 2 和 3 的文件 1 时,我可以看到我的所有数据。但是,当我只打开文件 1(复制到远离 2&3 的某个地方)时,我的数据库中没有数据,所以我认为有些东西不能正常工作。
该问题仅在设备上可见,而在模拟器上不可见,并且仅当您将 .sqlite 从应用数据复制到您的计算机时。如果您复制所有 3 个文件,您可以看到所有记录,但它表明所有内容都保存在缓存中而不是 sqlite 中。
也许我应该将[Object MR_createEntity] 交换为[Object MR_createInContext:context],因为该对象已创建但未插入到持久存储中?
【问题讨论】:
标签: ios objective-c sqlite magicalrecord