-isKindOfClass:不使用NSCFString

时间:2012-06-26 16:30:12

标签: objective-c introspection

为什么我的if语句不起作用?它不接受NSCFStrings ...... 基本上我是这样做的:

if ([myObj isKindOfClass:[NSString class]]) {
    // ...
}
else if ([myObj isKindOfClass:[NSNumber class]]) {
    //...
}
else {
    NSLog(@"Invalid NSMutableArray.\n\tWrong type in array: %@, The value is: %@.",[myObj class], myObj);
}

这是在一个循环中,我在NSMutableArray上迭代,里面只有NSNumbers和NSStrings。
奇怪的是,它接受NSNumbers,但没有NSStrings!
输出总是:

Invalid NSMutableArray.
    Wrong type in array: NSCFString, The value is: [Value I put in the string].

我认为NSCFString是NSString的子类,-isKindOfClass:也检测到了子类?

更新
我自己解决了。这确实是由@jjv360所说的 - 在第二个if之前失踪的其他原因引起的。我认为这是一个错字,因为我在这里重新输入了它而不是复制粘贴, 因为我嵌套了几个if-else s并且事情变得混乱(这是一个谷歌翻译 - 翻译) 。
毕竟非常愚蠢。

jjv360请将此作为答案发布。

1 个答案:

答案 0 :(得分:1)

这是我发表的评论作为答案:

if语句之间缺少else语句。没有它,它将运行第一个块中的代码以及最后的else块中的代码...