【问题标题】:Alternative to loading large text file - Swift加载大型文本文件的替代方法 - Swift
【发布时间】:2017-08-06 02:10:48
【问题描述】:

我正在尝试为 iOS 制作一个文字游戏,我需要根据字典检查单词以确定单词是否有效。

目前我正在从文本文件中加载字典并将其存储在一个集合中。但是,每次我启动应用程序时都需要几秒钟的时间来加载。文本文件大约有 250K 行。

我是否可以在每次应用启动时不必读取文本文件的情况下以数组或集合的形式获取数据?

【问题讨论】:

  • 能否详细说明。
  • 您可以将它们存储在数据库或其他东西中,而无需解析并将它们一直保存在内存中。
  • 检查 this Q&A -hopefully- 应该对您的情况有用

标签: ios arrays swift load


【解决方案1】:

您应该考虑使用例如 Core Data 来持久化您的 word 文件。

在您的应用首次加载时,您可以填充您的 Core Data 存储(可能在向用户解释规则时在后台)。

完成此操作后,您可以使用NSFetchRequest 查询您的单词存储

要使用预先填充的 Core Data 数据库,您可以先在开发中填充...

let count = try! moc.count(for: request)
if count = 0 {
    loadWords()
}

func loadWords() {
    // run through your words.txt file and create object(s)
    // for each word
}

准备好发布后,将数据库文件添加到应用程序的资源中,然后添加修改您的 loadWords() func 以将这些文件从应用程序包复制到 Core Data 存储的 url

【讨论】:

  • 如果我使用 Core Data,我可以用数据预加载它而不是在第一次应用加载时填充它吗?
  • 将文件从 bundle 复制到 Core Data url,如此处所示? link
  • 会将其标记为正确答案,但现在将获取的核心数据结果转换为 Set 时出现问题。请参阅我的新问题。
猜你喜欢
  • 2017-12-15
  • 1970-01-01
  • 2014-06-30
  • 1970-01-01
  • 2016-12-28
  • 1970-01-01
  • 2014-12-19
  • 1970-01-01
  • 2012-01-13
相关资源
最近更新 更多