【发布时间】:2019-03-02 08:28:58
【问题描述】:
我制作离线词典应用程序。现在我将字典文件转换为领域数据库。
转换函数:
if let path = Bundle.main.path(forResource: "dictionary", ofType: "dsl") {
do {
let data = try String(contentsOfFile: path, encoding: .utf8)
let myStrings = data.components(separatedBy: .newlines)
for (index, row) in myStrings.enumerated() {
if(row.containsChineseCharacters)
{
let firstWord = CNDict()
firstWord.word = row
firstWord.pinyin = myStrings[index+1]
firstWord.translate = myStrings[index+2]
try! realm.write {
realm.add(firstWord)
}
}
}
print("The task end.")
} catch {
print(error)
}
}
当我尝试立即转换字典时,数据库文件变成很多 GB 并在中间崩溃
将字典分成几部分不是一种选择,因为大约有 300 万行。这将花费很多......(领域插件崩溃)
我需要关于如何在我们的崩溃中向数据库添加尽可能多的值的帮助。
【问题讨论】:
-
上下文是什么,每个用户的手机上是否都有一个 300 万元素的字典,当他们更新时将转换为他们自己的领域数据库?是否有可能在服务器上预填充数据库?
-
请分享
CNDictRealm模型看看是否正确。另一件事是Fatal error: Index out of range,因为 lastindex+1和index+2可能会增加。 -
这个问题有点含糊。通常,在发布问题时,最好包含详细信息,以便我们了解用例。例如,什么是字典文件?你的数据结构是什么?正如之前的评论中提到的, index+1 没有任何上下文,所以我们不知道那是什么。什么是 CNDict? 3M 线有点多,可能会使设备过载,你能把数据分成块而不是一次全部读取吗?也许逐行处理文件?请花点时间查看:How do I ask a good question?.