我正在开发一个内部应用程序,它将在一个文本文件(约 60,000 行)中搜索内容。 用户将在其 iPhone 上的 UISearchBar 中键入一个字符串,应用程序将返回该字符串所在的行。
我就是这样做的。
首先,我将我的文本文件拆分为一个名为 entriesInLine 的数组:
var entriesInLine: [String] = []
let fileWithEntries = NSBundle.mainBundle().pathForResource("database", ofType: "txt")
var entriesFromFile = String(contentsOfFile: fileWithEntries!, encoding: NSUTF8StringEncoding, error: nil)
if let content = entriesFromFile {
self.entriesInLine = content.componentsSeparatedByString("\n")
println(self.entriesInLine.count)
}
然后我希望用户能够使用 UISearchBar 搜索数据库。这是我的搜索方法:
func filterEntries(searchText: String) {
for var i = 0; i < self.entriesInLine.count; i++ {
if ( self.entriesInLine[i].rangeOfString(searchText) != nil) {
self.filteredEntries.append(extractEntry(entriesInLine[i]))
}
这是我的 searchDisplayController 方法:
func searchDisplayController(controller: UISearchDisplayController!, shouldReloadTableForSearchString searchString: String!) -> Bool {
self.filterEntries(searchString)
一切正常,但速度太慢,因为数组很大。
您知道在我的文本文件中搜索内容的更快方法吗?
非常感谢您的帮助!
谢谢
最佳答案
试试这个我已经测试过。
var bundle: NSString = NSBundle.mainBundle().pathForResource("File", ofType: "")!
var entriesFromFile: NSString = NSString.stringWithContentsOfFile(bundle, encoding: NSUTF8StringEncoding, error: &attributeError) as NSString
var range: NSRange = entriesFromFile.rangeOfString("rrr")
var substring: NSString = entriesFromFile.substringToIndex(range.location)
var arr: NSArray = substring.componentsSeparatedByString("\n")
print("Occurence of String in File on Line Number", arr.count)
关于ios - 在一个巨大的文本文件中找到一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27225218/