-4

我有一个展示绘画的应用程序,绘画的数量约为 600 幅(即 600 png)。客户希望我将这些图像包含在应用程序构建中,这样即使用户不在线,它们也始终可以查看。当然,每张图片都有一些字段,如描述、画家和价格估算,所以这个应用程序不会流式传输任何内容,而是将所有数据都保存在本地。

无论如何,我正在考虑构建这个应用程序的最佳方式,我想到了核心数据,甚至是编码解码,但是由于这些图像永远不会改变,我可以将它们放在图像文件夹中,然后在 viewdidload 上循环文件夹的内容并构建我的 tableviewcells。

我的问题是:

1:这是一个好的架构吗?

2:我需要将这些图像与它们的相关描述相关联吗?这样做的最好方法是什么?如果我跳入核心数据并创建模型,我觉得这将是矫枉过正。

请记住,这些图像永远不会改变,数据也不会更新。

谢谢。

4

2 回答 2

2

几个想法:

  1. 正如您在另一个问题中所讨论的,我认为在应用程序中加载所有这些图像有其缺点,因为您说应用程序最终是 300mb。如果它确实会大于 50mb,那么我认为您可能想尝试劝阻您的客户不要坚持将所有图像都包含在应用程序本身中。我了解您可能无法说服他们,但至少要确保他们了解包含所有这些图像的含义(这使得安装应用程序变得更加困难,因此,他们可能会遇到较低的新应用程序采用率)应用程序)。

  2. 在 Core Data 中存储图像的相关描述是一个很好的方法。您也可以使用 SQLite(例如,通过FMDB包装器),但我真的鼓励您只使用 Core Data,除非您有其他一些未与我们分享的注意事项。但是许多其他用于简化持久数据(plist,NSUserDefaults等)的传统解决方案可能不适合这么多记录。Core Data 很棒,实际上并没有那么复杂。当然,第一次使用 Core Data 需要一点时间来适应,但它似乎非常适合这种数据量。

  3. 您谈论图像的“编码和解码”,并且您没有描述任何会导致我们建议这种过程的内容。你在考虑什么编码/解码?将图像存储在本地文件系统中可能更容易(如果包含在应用程序中,则存储在包中,如果您正在动态下载图像,则存储在文件系统的其他位置)。

  4. 您提到您可能“viewDidLoad只需遍历文件夹的内容并构建我的 tableviewcells”。也许我对此读得太多了(连同您关于接收内存警告的其他问题的评论),但鉴于您正在谈论将图像描述保留在 Core Data 中,您不需要遍历viewDidLoad. 您的UITableViewDataSource方法将简单地查询核心数据数据库并提供适当的信息。我认为没有必要遍历viewDidLoad.

于 2013-06-09T03:04:20.600 回答
1

前段时间我做了一个类似的应用程序。我为图像使用了唯一的代码名称,并创建了一个核心数据数据库,其中有一列将相应的数据行(描述、作者、...)与图像的“代码”名称(即 2347.png)相关联.

我的模型很简单,如下所示:

NSNumber *imageCode // the number that you would use to associate to your images
NSString *name
NSString *author
NSString *description

我假设您知道如何使用 Core Data.. 如果您不知道,您可以参考这个网站:iOS 5 上的 Core Data 教程:入门.. 真的很有帮助!

于 2013-06-09T02:05:28.997 回答