在我的iPhone应用程序中,我目前在一个plist中存储大约1000个英文单词并从那里获取它们(以及第二个1000个单词列表)。
这样做很好,但它有点笨拙。我对CoreData有一点经验,我可以看到它对我有什么帮助,因为我可以给每个单词对象,两个单词(匹配的单词)然后有一个与单词相关的组对象,所以我可以在组中管理它们我觉得这很有意义。
然而,有这么多数据,提取会变慢吗?有没有更好的办法?同样预先填充核心数据是个好主意(所以当用户使用应用程序时,这些单词存在,他们不需要添加任何东西)?
我只需要找到更好的解决方案。
为了清楚起见,这就是我需要实现的目标:
答案 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数据库。
我建议根据您最容易维护的内容做出决定,并在某种程度上根据应用程序如何使用它们来做出决定。 (即如果不将这些对用作对象,则表查找可能比核心数据更合适。)