我有一个Swift应用程序,其数组大约有~100k字符串。该数组看起来像这样:
let strings: [String] = [
"a",
"as",
// 99,998 elements later...
"zebra"
]
在iOS模拟器中构建和运行应用程序需要将近6分钟。我已经将缓慢的构建时间与在项目中包含此数组隔离开来。一旦构建,后续启动非常快(直到我必须再次构建)。我该怎么做才能加快构建过程?
答案 0 :(得分:0)
根据上面的评论,对我来说最好的解决方案是使用文本文件。数据库也可以工作,但在这种情况下它会增加不必要的复杂性。文本文件如下所示:
a
as
...
zebra
使用the StreamReader
gist中的this SO post读取文件。这样做的代码如下:
if let aStreamReader = StreamReader(path: "/path/to/file") {
for word in aStreamReader {
// This is where I'm testing the following conditions:
// 1) Does the word have a specific number of characters (e.g. 4 or 7)?
// 2) Do all the characters in the word exist in a stored string?
// e.g "lifeline", where "file" would match, but "lifelines" wouldn't.
// This code is only here for context.
if contains(characterCountsToMatch, countElements(word)) {
if stringToMatch.containsCharsInString(word) {
matchingWords.append(word)
}
}
}
}
生成的matchingWords
数组只包含必要的元素 - 在我的情况下约为600(不是~100k元素!)。该应用程序现在编译没有延迟。从文件中读取并将匹配附加到matchingWords
数组大约需要5秒钟,这可以满足我的需要,但如果需要可以进一步优化。