2012-03-15 4 views
0

Я создаю игру и добрался до точки, где у меня есть строки для поиска и посмотреть, действительно ли они слова, определенные в файле words.txt, который я хочу импортировать.Соответствующие слова с .txt-файлом

Я мало знаю о файле IO в объекте C/IOS, и поиск привел меня к тому, что связано с sqlite и Lucene.

Каков наилучший подход к простому поиску словаря для подтверждения строки - это фактическое словарное слово из слова.txt?

+0

Сколько слов содержит word.txt? – sch

ответ

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

+0

, вам просто нужно добавить * к возвратной остановке. Итак, return * stop – gma

+0

, поэтому он возвращается каждый раз, но это бессмысленные слова ... – gma

Смежные вопросы