0

NSDictionaryからオブジェクトを追加するNSMutableArrayがあります。これらのオブジェクトは1または0のいずれかの値です。このNSMutableArrayをループして、各値をチェックしようとしています。1の場合は、配列に緑色の目盛り画像を追加し、ゼロの場合は、配列に赤十字の画像を追加します。

ただし、NSMutableArrayの値を確認すると次のエラーが発生します。

[__NSArrayI isEqualToString:]: unrecognized selector sent to instance

これが私のコードです:

     facilitiesAvailable = [NSMutableArray new];

     [facilitiesAvailable addObject:[[InfoDictionary valueForKey:@"wc-avail"]copy]];
     [facilitiesAvailable addObject:[[InfoDictionary valueForKey:@"wifi_avail"]copy]];

    tixArray = [NSMutableArray new];

    for(NSString *avail in facilitiesAvailable) {

        if([avail isEqualToString:@"1"]) {

            [tixArray addObject:[UIImage imageNamed:@"greenTick.png"]];
        } else {

            [tixArray addObject:[UIImage imageNamed:@"redCross.png"]];
        }

    }

私は何が間違っているのですか?

4

2 に答える 2

0

メッセージ:

 [__NSArrayI isEqualToString:]: unrecognized selector sent to instance

これavailは、NSArrayオブジェクトであり、期待どおりのNSStringではないため、エラーが発生することを意味します。InfoDictionary辞書はそこから来ているので、どのように辞書に入力するかを確認する必要があります。

于 2012-06-13T17:55:12.467 に答える
0

好奇心から、コードを次のように置き換えるとどうなりますか。

for(int i = 0; i < [facilitiesAvailable count]; i++) {
    NSString * avail = (NSString *)[facilitiesAvailable objectAtIndex:i];

    if([avail isEqualToString:@"1"]) {
        [tixArray addObject:[UIImage imageNamed:@"greenTick.png"]];
    } else {              
        [tixArray addObject:[UIImage imageNamed:@"redCross.png"]];         
    }
}

これは、facilityAvailableに追加されるオブジェクトが、InfoDictionary内のオブジェクトが本当にNSStringオブジェクトであることに基づいていることも前提としています。これにより、NSStringオブジェクトにCASTSされますが、InfoDictionaryから実際にそれを取得しない場合は、奇妙な動作が発生します。

于 2012-06-13T18:04:49.397 に答える