ios - 在一个巨大的文本文件中找到一个字符串

标签 ios swift uisearchbar

我正在开发一个内部应用程序,它将在一个文本文件(约 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/

相关文章:

ios - 使用 IQKeyboardManager 时如何固定导航栏的位置?

ios - 在 didHideSearchResultsTableView 上隐藏键盘会弄乱搜索 View

ios - 搜索栏和导航栏之间的空白 - Swift

ios - 从 Firebase 获取数据非常慢

ios - 如何使用解析检查应用程序中的管理员登录? [iOS]

objective-c - Objective C ARC 释放而不分配变量

ios - 调用 KeyboardDidHide 时无法更改 UIView 高度

iOS 核心数据 : Where to set up and load the database?

ios - 从存储在变量中的类型获取静态属性的内容

ios - 更改文本后无法更改 UISearchBar 取消按钮标题颜色。