我正在编写一个需要经常与Core Data通信的应用程序。由于经常访问,我关注我的应用程序和核心数据性能。
基本上在主屏幕上,当用户按下UI上的按钮时,我将执行以下操作。从核心数据中获取 - >删除核心数据中的获取对象 - >添加到核心数据
在我的应用程序的设计中,用户可以多次执行按钮按下(每3秒一次),并且它将经常执行上述动作。我还需要记住用户退出应用时最后保存的内容。
通过这样的设计,我该如何处理数据?这种设计流程是否会引起关注?
答案 0 :(得分:1)
Apple文档解决了性能问题here。您可以在给定链接上阅读更多内容
如果您使用的是SQLite存储,则可以使用获取限制来最小化内存中托管对象的工作集,从而改进 你的申请表现。
如果您需要检索许多对象,则可以创建应用程序 通过执行多次提取看起来响应更快。在第一个 获取,你检索相对较少数量的对象 例如,100-并使用这些对象填充用户界面。您 然后执行后续提取以检索完整的结果集 通过fetchOffset方法。
答案 1 :(得分:1)
这应该可以正常工作,除非您保存的对象非常大或非常复杂,例如有很多关系。当然,它还取决于您的应用程序同时发生了什么,例如网络流量,其他文件操作等。
请务必使用父/子上下文组合在后台队列上执行实际的文件操作。
最小化文件操作次数的一种方法也是仅在用户点击按钮时保存到您的(内存中)工作上下文,并且每隔一段时间只保存到磁盘(通过私有上下文),例如,当用户离开当前屏幕或应用程序进入后台时。唯一的缺点是,当您的应用程序在磁盘操作之前崩溃时,您可能会丢失数据。
**我刚刚编辑了这个答案,以明确用于保存到磁盘的私有上下文应该是您工作环境的父级
答案 2 :(得分:-1)
如果您对Core Data过度使用有疑问,请按照此简单步骤进行操作。
简单核心数据实施。
- 从用户那里获取数据
- 将其置于上下文
中- 验证上下文
- 如果验证成功,请转到步骤4.
- 如果验证失败转到步骤6.
- 保存上下文
- 获取上下文并将其显示给用户
- 如果用户想要删除数据,请转到步骤6
- 如果用户更新数据,请转到步骤2
- 如果用户不与数据交互而不是通过步骤5进行迭代
- 删除上下文
醇>
干杯!