【问题标题】:iPhone SDK: NSMutableArray unrecognized selectoriPhone SDK:NSMutableArray 无法识别的选择器
【发布时间】:2012-06-13 17:52:05
【问题描述】:

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

    }

我做错了什么?

【问题讨论】:

  • 在不知道您的 InfoDictionary 中的内容的情况下,很可能不会出现一个好的答案。它们是真正的值或 NSStrings 洞字符 1 或 0?

标签: iphone nsmutablearray


【解决方案1】:

消息:

 [__NSArrayI isEqualToString:]: unrecognized selector sent to instance

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

【讨论】:

  • @sergio - 这基本上就是我在上面的评论中所说的,你的应该是评论,而不是答案!!!
【解决方案2】:

出于好奇,如果您将代码替换为以下内容会发生什么:

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 对象,但如果它们不是真的来自 InfoDictionary,您会得到奇怪的行为。

【讨论】:

  • 它很可能会崩溃,因为您放入 NSMutableArray 的来自 NSDictionary 的对象不是字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多