0

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

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

但是,有这么多数据,获取会很慢吗?有没有更好的办法?预先填写核心数据是否也是一个好主意(所以当用户使用应用程序时,这些词就存在了,他们不必添加任何东西)?

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

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

  • 有一个大约的清单。1000 字(2000,如果你包括对)
  • 每个词都需要有一个配对词(所以它们成对出现)
  • 我需要将这些硬编码到应用程序中,以便它们从一开始就为用户存在。
  • 当然,我需要任何人都渴望的最容易管理的解决方案(当然是在合理的范围内)。
4

2 回答 2

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];
} 
于 2012-11-19T12:47:32.403 回答
0

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

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

于 2012-11-19T12:34:25.020 回答