如何将文本文件用作数据库?

时间:2014-12-02 14:28:05

标签: ios swift

我有一个大文本文件,将用作英语词典数据库。 (一本真正的字典)

用户将在搜索栏中键入单词,应用程序将返回包含该单词的文本文件的所有行。

* - 每行解释一个词的含义

- 有些单词位于我的文本文件*

中的多行

这是我的逻辑

首先,我在 self.entriesFromFile (这是我的文本文件的一个字符串)中寻找这个词:

var range:NSRange? = self.entriesFromFile!.rangeOfString(searchText)

然后我找到子串

var substring:NSString = self.entriesFromFile!.substringToIndex(range!.location)

我将子串拆分为行

var substringArray:NSArray = substring.componentsSeparatedByString("\n")

像这样 substringArray.count 将返回找到searchText的当前行。我需要行号来识别字典中的单词以获得更多功能。

我使用了这个逻辑,因为我需要它对用户来说很快,文本文件包含超过60,000行。

这样可以正常工作,但它只返回找到的第一个条目。

你能帮我找到如何返回包含搜索字词的所有行号吗?

感谢您的宝贵帮助

2 个答案:

答案 0 :(得分:2)

// I assume that searchText already has all file content
var lines = searchText.componentsSeparatedByString("\n")
var lineNumber = 0
for line in lines {
  // It will fire 60.000 times
  if string.rangeOfString("Some string you are searching for") != nil {
    linesNumbers.append(lineNumber)

  }
  lineNumber++
}

答案 1 :(得分:1)

枚举行并搜索每一行:

var lines: [String] = []
var lineNumber = 1; // or start with 0
self.entriesFromFile.enumerateLinesUsingBlock { line, stop in
    if line.rangeOfString(searchedText) != nil {
        lines.append(line) // or store the lineNumbers
    }
    lineNumber++
}

我在这里直接编写代码,可能需要更改才能编译:P