在Objective-C中存储和加载大量数据的最佳方法

时间:2011-10-06 20:12:30

标签: objective-c ios cocoa-touch

我正在制作一个会使用大量数据的应用程序,例如~100个条目,每个条目包含多个图像,> 250个单词的文本和多个1个单词/字符值。

我只想知道在目标c中执行此操作的最佳做​​法?

例如,我是否有一个包含所有值的纯文本文件,然后在运行时读取它?

或者我需要创建一个包含所有这些值的对象吗?

我希望这不使用网络资源,因为我希望该应用能够离线运行。

2 个答案:

答案 0 :(得分:2)

你有很多选择。您可以将数据存储在plists中,为它们创建对象并序列化为文件或使用数据库。对于您的特定场景,我建议存储在像sqlite这样的数据库中。

答案 1 :(得分:2)

一百条记录,每条记录可能有几十个字段,但不是很多数据。我建议将数据存储为属性列表,可能是一组字典。这是最简单的解决方案,可能足以满足您的需求。加载数据可能非常简单:

NSArray *records = [[NSArray alloc] initWithContentsOfFile:pathToFile];

数组中的每个条目都可以是一个字典,其中包含记录中每个字段的键。这为您提供了很大的灵活性。您当然可以单独访问每条记录,但您也可以使用NSPredicate选择与您指定的条件匹配的记录子集。您还可以对数组使用键值编码来获取特定键的所有值的数组。例如,如果您想要每个记录的“名称”字段数组,您可以说:

NSArray *names = [records valueForKey:@"name"];

有一个像SQLite和Core Data这样的解决方案的地方,但是对于这么小的数据集你可能不需要它们。