iPhone SDK:NSMutableArray无法识别的选择器

时间:2012-06-13 17:52:06

标签: iphone nsmutablearray

我有一个NSMutableArray,它从NSDictionary中获取添加到它的对象。 这些对象是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"]];
        }

    }

我做错了什么?

2 个答案:

答案 0 :(得分:0)

消息:

 [__NSArrayI isEqualToString:]: unrecognized selector sent to instance

表示avail是NSArray对象,而不是您所期望的NSString,因此错误。您应该检查填充InfoDictionary词典的方式,因为它来自那里。

答案 1 :(得分: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"]];         
    }
}

这也假设添加到facilitiesAvailable的对象基于InfoDictionary中真正是NSString对象的对象。这将它们归结为NSString对象,但如果它们不是来自InfoDictionary,那么你会得到奇怪的行为。