2012-04-20 3 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:私はすべての一般的な単語を配列に格納しようとしました(そしてそれらをセットに入れてみました)。この方法は機能しますが、それは私の目的にとっては非常に遅すぎますし、フレームレートに膨大な負担をかけます。 – JDodge

答えて

1

これが最も簡単な方法かどうかはわかりませんが、2番目の条件を付けることができます。最初に、あなたのコードのどこかにある固有名詞(またはあなたが望まない他の単語)を配列に格納しておけば、それらを考えることができなければ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

それは良い提案です。私はそれを試してみましょう。しかし、NSArrayやNSSetの中の単語に対してtestStringをチェックしている私の経験は、フレームレートを著しく低下させ、応答は遅いです。 UITextCheckerはほとんど瞬間的であり、画面上でアニメートするオブジェクトのフレームレートには影響しません。 – JDodge

+0

これを1000sの単語で使用しようとしていない限り、フレームレートに顕著な低下は起こりません。私は私のゲームやfpsの1つでこれを使用しています。 – G4laxy

+0

まあ、私は1000語以上の単語を使っていると思うので、私は検索を続けると思います。このアプローチは、最初はうまく動作します。ありがとう! – JDodge

関連する問題