objective-c – 具有内存存储的核心数据

objective-c – 具有内存存储的核心数据,第1张

概述我想将Core Data用作数据库服务器上较大数据集的缓存. 并非所有数据都在内存中. 在考虑这个问题时,我想到了两个问题: >可以将故障(例如1-n关系)与内存持久性存储一起使用,如果是这样,你如何捕获故障? >核心数据管理对象上下文具有过期间隔.这也适用于内存商店​​吗? 或者我应该为此目的使用NSAtomicStore? 您的第一个问题表明您误解了NSInMemoryStore类型持久性存储 我想将Core Data用作数据库服务器上较大数据集的缓存.
并非所有数据都在内存中.

在考虑这个问题时,我想到了两个问题:

>可以将故障(例如1-n关系)与内存持久性存储一起使用,如果是这样,你如何捕获故障?
>核心数据管理对象上下文具有过期间隔.这也适用于内存商店​​吗?

或者我应该为此目的使用NSAtomicStore?

解决方法 您的第一个问题表明您误解了NSInMemoryStore类型持久性存储的意图.它们是Core Data堆栈的持久存储部分.当您将实例引入托管对象上下文时,会发生错误;创建一个错误,该错误在触发时从NSPersistentStoreCoordinator的缓存或底层持久存储中触发并填充.内存存储不会改变故障关系.显然,它不会真正帮助你解决问题,但是因为你必须将所有数据保存到内存中.内存存储非常适合于(1)测试(它们很快)和(2)临时核心数据堆栈,您希望在其中使用Core Data的对象图管理而无需将任何内容持久保存到磁盘.

在回答第二个问题时,答案是肯定的.过时间隔适用于上下文,而不适用于持久性存储.

那么,Core Data是否适合从远程数据库服务器缓存数据?并不是的.尽管Bill Bumgarner(一位Apple工程师)暗示这是可能的,但我发现在我自己的代码中将缓存与Core Data对象图管理分开会更容易.使用Core Data来管理对象图并轻松绑定到Controller / UI层仍然非常好.所以我的策略是从数据库服务器提取数据并将其缓存在我自己的数据结构中(OS X 10.6中的libcache和NSCache可能是一个非常好的起点).然后在对象图中确定您想要的内容并将其迁移到Core Data堆栈(由内存持久性存储库支持).您必须自己处理来自数据库服务器的更改通知或轮询.当数据库中的数据发生更改(或用户查询更改等)时,我只是告诉所有编辑器完成编辑,然后擦除上下文并从(可能)更新的缓存中重建它.

总结

以上是内存溢出为你收集整理的objective-c – 具有内存存储的核心数据全部内容,希望文章能够帮你解决objective-c – 具有内存存储的核心数据所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1011614.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存