iPhone,存储1000个预制单词

时间:2012-11-19 12:23:45

标签: iphone objective-c core-data plist

在我的iPhone应用程序中,我目前在一个plist中存储大约1000个英文单词并从那里获取它们(以及第二个1000个单词列表)。

这样做很好,但它有点笨拙。我对CoreData有一点经验,我可以看到它对我有什么帮助,因为我可以给每个单词对象,两个单词(匹配的单词)然后有一个与单词相关的组对象,所以我可以在组中管理它们我觉得这很有意义。

然而,有这么多数据,提取会变慢吗?有没有更好的办法?同样预先填充核心数据是个好主意(所以当用户使用应用程序时,这些单词存在,他们不需要添加任何东西)?

我只需要找到更好的解决方案。

为了清楚起见,这就是我需要实现的目标:

  • 列出约。 1000字(如果包括对,则为2000)
  • 每个单词都需要有一个合作词(所以它们成对出现)
  • 我需要将这些硬编码到应用程序中,以便用户通过单词go来存在。
  • 当然,我需要最容易管理的解决方案,可以在任何人都渴望的情况下进行思考(理所当然)。

2 个答案:

答案 0 :(得分:1)

我真的不明白为什么使用Core Data会比plist更容易 - 无论哪种方式你都必须以某种方式填充列表。在我看来,你可以将plist硬编码并加载为NSDictionary。

或者,如果您想要更容易编辑的内容,您可以随时使用Excel制作逗号分隔值文件(csv)并以此方式创建它。然后,您可以在捆绑包中包含csv文件并创建一个简单的方法来在应用程序启动时加载文件,将其转换为所有关键值的NSArray:

NSArray *keysAndValues = [myString componentsSeparatedByString:@","];
NSMutableArray *words = [NSMutableArray arrayWithCapacity:(keysAndValues.count / 2)];
for (int i = 0; i < keysAndValues.count; i += 2) {
    [words addObject:[NSDictionary dictionaryWithObject:[keysAndValues objectAtIndex:i+1] forKey:[keysAndValues objectAtIndex:i];
} 

答案 1 :(得分:0)

Core Data中1000对单词的性能应该不是问题。 OTOH,既不是简单文件也不是SQLite数据库。

我建议根据您最容易维护的内容做出决定,并在某种程度上根据应用程序如何使用它们来做出决定。 (即如果不将这些对用作对象,则表查找可能比核心数据更合适。)