2012-03-15 96 views
0

匹配的話我創建一個遊戲,並已經得到了在那裏我有字符串查找,看他們是否確實在words.txt文件,我想導入定義的話點。名爲.txt文件

我知之甚少文件IO在客觀C/IOS和搜索使我事做SQLite和Lucene的。

什麼是一個簡單的字典查詢,以確認字符串,最好的辦法是從words.txt實際字典中的單詞?

+0

多少單詞不words.txt包含哪些內容? – sch 2012-03-15 17:31:07

回答

0

這不會有什麼使用SQLite,除非你把你的文件中的SQLite數據庫,你沒有提到。最快的方式做你的願望會是這樣:

  1. 加載該文件到內存(除非這是你不希望一次加載,在這種情況下使用NSFileHandle一個巨大的文件):

    NSError* err; 
    NSString* words = [NSString stringWithContentsOfFile:@"words.txt" encoding:NSUTF8StringEncoding error:&err]; 
    // check err! 
    if (err) { 
        // handle errors 
    } 
    
  2. 將單詞轉移到一個集合,比如說一個NSArray的實例。我們假設的文字,被昏迷文件中分離:

    NSArray* wordsArray = [words componentsSeparatedByString:@","]; 
    
  3. 檢查你的話是數組中:

    NSString* wordWeLookFor = @"FooBar"; 
    NSUInteger index = [wordsArray indexOfObjectPassingTest: 
         ^(id obj, NSUInteger idx, BOOL *stop) { 
          *stop = [(NSString*)obj isEqualToString:wordWeLookFor] 
          return *stop; 
         }]; 
    if (index != NSNotFound) { 
        // Found! 
    } else { 
        // Not found! 
    } 
    

我假設你想避免可能出現的問題用複合詞,這就是爲什麼步驟2和3是必要的。如果你沒有太多的話你的文件,你覺得幸運,你可以簡單地使用rangeOfString方法並跳過步驟2和3。

+0

謝謝,但索引的格式有問題。我得到「不兼容的塊指針類型」和他們說的指針類型是不一樣的 – gma 2012-03-15 21:45:22

+0

看起來像你只需要添加一個*到返回站。所以 返回*停止 – gma 2012-03-15 21:54:17

+0

所以它每次都返回發現,但這些都是無稽之談... – gma 2012-03-15 21:57:53