9

NSMutableArray (_theListOfAllQuestions)ファイルから数値を入力しています。次に、その配列内のオブジェクトを比較したqNr (NSString)ところ、エラーが発生しました。比較していることを確認するために、配列を別の , にキャストしましNSStringた。比較するアイテムも使用してテストしました。_checkQuestionsNSStrings

-(void)read_A_Question:(NSString *)qNr {
NSLog(@"read_A_Question: %@", qNr);
int counter = 0;
for (NSString *item in _theListOfAllQuestions) {
    NSLog(@"item: %@", item);
    _checkQuestions = _theListOfAllQuestions[counter]; //_checkQuestion = NSString
    NSLog(@"_checkQuestions: %@", _checkQuestions);
    if ([_checkQuestions isEqualToString:qNr]) {
        NSLog(@">>HIT<<");
        exit(0);   //Just for the testing
    }
    counter++;
 }

このコードを実行すると、次のようになりますNSLog

read_A_Question: 421
item: 1193
_checkQuestions: 1193

...そしてエラー:

-[__NSCFNumber isEqualToString:]: 認識されないセレクターがインスタンス 0x9246d80 に送信されました *** キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了します。理由: '-[__NSCFNumber isEqualToString:]: 認識されないセレクターがインスタンス 0x9246d80 に送信されました'

私はまだNSString何らかの数と比較していると信じていますが、私にはNSString対比較しているように見えNSStringます。

ここで、1) 問題を理解し、2) 問題を解決するために、本当に助けが必要でしょうか?

4

2 に答える 2

15

この行を置き換えます

if ([_checkQuestions isEqualToString:qNr])

 if ([[NSString stringWithFormat:@"%@",_checkQuestions] isEqualToString:[NSString stringWithFormat:@"%@",qNr]])

それがあなたを助けることを願っています..

于 2013-01-21T19:31:07.763 に答える
2

_theListOfAllQuestions配列にはNSNumberオブジェクトがあり、オブジェクトはありませんNSString。したがって、isEqualToString直接使用することはできません。

これを試して、

for (NSString *item in _theListOfAllQuestions) {
    NSLog(@"item: %@", item);
    _checkQuestions = _theListOfAllQuestions[counter]; //_checkQuestion = NSString
    NSLog(@"_checkQuestions: %@", _checkQuestions);
    if ([[_checkQuestions stringValue] isEqualToString:qNr]) {
        NSLog(@">>HIT<<");
        exit(0);   //Just for the testing
    }
    counter++;
 }
于 2013-01-21T19:28:59.997 に答える