gpt4 book ai didi

ios - 魔法记录 - 上下文(不保存)

转载 作者:行者123 更新时间:2023-11-29 12:40:56 24 4
gpt4 key购买 nike

我完全不确定问题出在哪里。我正在创建一个新对象并将其插入到上下文中:

Object *object = [Object MR_createEntity];
object.name = @"blahblah";
NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext];
[context MR_saveToPersistentStoreAndWait];

根据docs我不应该使用 + MR_contextForCurrentThread 所以我不:

In particular, do not use +MR_contextForCurrentThread from within any of the +[MagicalRecord saveWithBlock:…] methods — the returned context may not be correct!

但是,如果我打开我的应用程序数据,我可以看到 3 个文件 (1)appname.sqlite、(2)appname.sqlite-shm 和 (3)appname.sqlite-wal。据我所知 2&3 只是缓存。当我打开文件 1 以及文件 2 和 3 时,我可以看到我的所有数据。但是,当我只打开文件 1(复制到远离 2 和 3 的某个地方)时,我的数据库中没有数据,所以我想有些地方没有正常工作。

该问题仅在设备上不在模拟器上可见,并且仅当您将 .sqlite 从应用程序数据复制到计算机时才可见。如果您复制所有 3 个文件,您可以看到所有记录,但它表明所有内容都保存在缓存中而不是 sqlite 中。

也许我应该将 [Object MR_createEntity] 交换为 [Object MR_createInContext:context] 因为对象已创建但未插入到持久存储中?

最佳答案

您在此处提供的代码是正确的。 shm 文件称为共享内存日志。 wal 称为预写日志。它们的存在是为了帮助 SQLite 更快地执行保存和提取。也就是说,您应该始终能够打开 sqlite 文件并查看数据存储中的内容。

因此,需要注意的一些事项是启用日志。您的数据可能没有保存,因为您已按要求指定了属性但未填写。此外,您可能在错误的地方查找 o

关于ios - 魔法记录 - 上下文(不保存),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24953774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com