核心数据请求和保存的最佳实践
Posted
技术标签:
【中文标题】核心数据请求和保存的最佳实践【英文标题】:Best Practice for Core Data Requests & Save 【发布时间】:2016-07-31 14:12:09 【问题描述】:我对核心数据还很陌生。这很令人困惑。
我想在 Core Data 中存储许多小尺寸的图像。但是,我对最有效的方法感到困惑。
当我的视图控制器加载时,我从服务器获取我需要查看的图像列表并将它们加载到 UITableView 中。在我的表格视图数据源中,我想检查图像是否在 Core Data 中可用。如果没有,我从服务器加载它,然后将其保存到核心数据。
这是我的问题……
每次调用 'cellForRowAtIndexPath' 时对单个图像发出新的核心数据请求是否有效?此外,当/如果我从服务器检索单个图像时,将其保存到核心数据是否有效?
或者最好从 Core Data 中检索所有图像,然后让“cellForRowAtIndexPath”在检索到的图像中搜索它需要的图像?
感谢您的帮助!试图理解核心数据。
【问题讨论】:
【参考方案1】:批量获取图像更有效(或者图像的图像路径很大并且您将二进制数据存储在数据存储之外)。这是为您的 UI 查找图像的方法。快速搜索您的内存中图像列表以确定您是否有图像或需要从服务器获取它是非常快的。以同样的方式单独从数据存储中获取并不是那么快......
从服务器获取图像时,您可能会单独获取它们,然后将它们单独保存到数据存储中也是合适的。
【讨论】:
感谢您的回复!当您说在内存中搜索它们比从存储中搜索它们时,我想我同意。【参考方案2】:如果图像很小(如 ~10KB),将它们存储在数据库中应该没问题。
根据我的经验,在需要时加载图像会导致代码库更简洁,内存效率更高,并且在图像数量增加时可以更好地扩展。
当图像数量增加时,另一种方法(一次加载所有图像)会变慢。
对于移动数据库,我建议使用Realm.io 而不是Core Data。这要容易得多,麻烦更少。
【讨论】:
感谢您的回复!以上是关于核心数据请求和保存的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章
Navigation iPhone App 的核心数据最佳实践问题
在 iOS 上处理 Core Data 数据库的频繁更新和请求的最佳实践?