【问题标题】:iPhone, Store 1000 Pre-made WordsiPhone,存储 1000 个预制字
【发布时间】:2012-11-19 12:23:45
【问题描述】:

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

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

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

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

要明确一点,这就是我需要实现的目标:

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

【问题讨论】:

    标签: iphone objective-c core-data plist


    【解决方案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];
    } 
    

    【讨论】:

    • 感谢您的建议,但可能稍微简化了一种方法。我询问 CoreData 的原因是因为我需要保留其他引用,例如单词组,更重要的是,我已经实现的每个单词都有一个计数器,但是在仍然引用正确单词的同时使用 plist 存在很大问题。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-03-05
      • 1970-01-01
      • 1970-01-01
      • 2014-04-30
      • 2019-12-18
      • 2020-07-03
      • 1970-01-01
      • 2012-12-25
      • 1970-01-01
      相关资源
      最近更新 更多