所以我有10,000多个字符串,如果该组中包含任何给定的字符串,我需要查询。我目前将它们存储在数组中,而我只使用stringArray.contains(myString)
功能。这有效吗?我正在将此数组存储在单独的类和文件中,但是拥有如此庞大的数组
如果您只需要进行contains
检查,并且不在乎元素订购,请使用Set
。
let someStrings: Set = ["a", "b", "c"]
print(someStrings.contains("a"))
您可能必须面对的更大的问题是如何检索可能想要的字符串。我建议您研究字符串中包含的Trigraphs的索引。特别是,确定在字符串中出现的三个字符的所有序列,并用它包含的最少常见的trigraph索引字符串。
您可以从字符串语料库中构建自己的频率表,或者,如果我没记错的话,您可以在网上找到Trigraph频率的通用表,尽管我在这里没有方便的链接。
随着我的进展,字符串数量超过150万,我不想将它们存储在大量的swift文件中。因此,我为其创建了一个JSON文件,并创建了一个单例,该单元在应用程序启动时从JSON中解析了数据。但是,这非常慢,所以我搬到了将其存储在使用该应用程序的SQLite数据库中的选项。然后,我使用以下库进行搜索:
https://github.com/stephencelis/sqlite.swift