繁体   English   中英

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

[英]iPhone SDK: NSMutableArray unrecognized selector

我有一个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"]];
        }

    }

我究竟做错了什么?

消息:

 [__NSArrayI isEqualToString:]: unrecognized selector sent to instance

表示avail是一个NSArray对象,而不是您期望的NSString,因此是错误的。 您应该检查如何填充InfoDictionary词典,因为它是从那里来的。

出于好奇,如果用以下代码替换代码,会发生什么:

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中获得了异常的行为,则您将获得奇怪的行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM