2012-04-20 2 views
1

Я занимаюсь классом UITextChecker, чтобы выполнить быструю проверку строки для словесной игры. Работает немного СЛИШКОМ. К сожалению, насколько я могу судить, единственные методы, которые действуют в этом классе, возвращают «правильные» слова, которые также включают собственные существительные. Я хотел бы проверить мои строки против списка общих слов, которые НЕ включают собственно имена. Вот мой код:UITextChecker без собственных существительных

//Test the answer for a word 
    UITextChecker *checker = [[UITextChecker alloc] init]; 
    NSString *testString = wordString; 
    NSRange range = NSMakeRange(0,0); 
    range = [checker rangeOfMisspelledWordInString:[testString lowercaseString] 
              range:NSMakeRange(0, [testString length]) 
             startingAt:0 
               wrap:NO 
              language:@"en_US"]; 
    if (range.location == NSNotFound) { 
     spelledWord = YES; 

    } else { 
     spelledWord = NO; 

    } 

Любая помощь будет оценена!

+0

У вас есть список общих слов в любом месте, как в массиве.? –

+0

hp iOS Coder: Я попытался хранить все распространенные слова в массиве (а также попытался поместить их в набор), а затем проверить testString на все. Этот метод работает, но он слишком медленный для моих целей и создает невероятную нагрузку на частоту кадров. – JDodge

ответ

1

Не уверен, что это самый простой способ, но вы можете поставить второе условие. Сначала храните массив с соответствующими именами (или другими словами, которые вы не хотите) в другом месте вашего кода выполняйте поиск в Google, если вы не можете думать о них. (Я немного адаптировал это из метода, который я использую)

if (range.location == NSNotFound) { 
int i = 1; 
NSString *p; 
foundrand = FALSE; 
if ([[MyArray sharedKelArray].Myarray count] >2){ 
     ////NSLog(@"GOTTEN - %d", choosennumber); 
     while(i<[[MyArray sharedKelArray].Myarray count])//would check that if equal 
     { 
      p = [[[MyArray sharedKelArray].Myarray objectAtIndex:i] NSString]; 
      NSLog(@"Checking word - %d",p); 



       if (testString == p){ 
        NSLog(@"Matched"); 
        spelledWord = NO; 
i = 5 + [[MyArray sharedKelArray].Myarray count]; 

       } 
       i+=1; 

     } 
     spelledWord = YES; 
    } 
} 

} 
+0

Это хорошее предложение. Я попробую. Тем не менее, мой опыт проверки моего testString на слова в NSArray или NSSet серьезно замедляет частоту кадров, и реакция медленная. UITextChecker почти мгновенен и не влияет на частоту кадров анимации объектов на экране. – JDodge

+0

Если вы не пытаетесь использовать это с тысячами слов, это не должно приводить к заметному снижению частоты кадров. Я использую это в одной из моих игр, и fps остается устойчивым. – G4laxy

+0

Ну, я думаю, я буду использовать его с более чем 1000 слов ... поэтому я думаю, что продолжу поиск. Этот подход отлично подходит для начала. Благодаря! – JDodge

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