【发布时间】:2012-07-23 02:00:49
【问题描述】:
我计划构建一个主要内容是图像的应用程序。基本上,它将有多个使用UITableViews 的菜单,其单元格将只有一个图像。当您单击单元格时,您将被推送到一个包含该图像的简单视图和另一个包含其余详细内容的视图。
这一切都很容易做到,我的问题是关于优化的。它会有很多内容(可能有 1k 行)并且会在UITableView 中显示图像,所以 Core Data 是必须的(考虑到它是延迟加载和其他一些优化)
我的问题是:最好将图像存储在Core Data 数据库中(如NSData)还是只存储图像的名称?我想象的是,如果我存储资源的名称,对于UITableView 中的每一行,设备必须获取该图像,处理它最终显示它。当滚动浏览它们时(预计会发生很多),我们会有很多获取图像。如果我将它们存储在Core Data 中,它就像获取该信息并将其用作图像一样简单。
将图像存储在Core Data 中的好处在于将 blob 存储在数据库中的正常撤回。我不知道这在 Core Data 中会有多大的问题(我在 dbs 方面的经验主要来自 MySQL)
另一方面,我的“常识”要求只保存名称并在需要时获取图像,如果要求更多,则需要更多时间,我不确定性能如何命中会是这样。有没有“最好的方法”来存储它们?只需名称,然后在 mainBundle 上调用 pathForResourse:ofType: 或(如果更快)pathForResourse:ofType:inDirectory:,存储 URI,或其他形式的指向它。
编辑:应用程序将附带应用程序的静态内容,用户将无法以任何方式修改此内容。 (至少在 1.0 版本中)
【问题讨论】:
-
很小,每个顶部 20kb?它们是包含文本和符号的图像,黑白
-
如果它们不是太大,那么我不会太担心,除非您可能希望将 blob 放在单独的对象中,以便单独加载元数据。
-
我发现在处理带有缩略图的 UITableViews 时,将它们存储在数据库中也更方便。与只存储文件名位置是天壤之别,你很快就会遇到延迟加载的问题,而且不好处理。我最近发布了一个image+db机制的应用,没有人抱怨性能。
-
嗯...我没有仔细阅读,如果您打算将图像存储在包本身中以便在您的应用程序中分发,那么将它们也放在 db 中是没有意义的。
-
就是这样,我可以将它们打包在数据库中而不是捆绑包中。如果我想说使用应用内购买销售更完整的数据库,它也会更容易
标签: iphone ipad optimization core-data