【发布时间】:2012-06-26 16:30:12
【问题描述】:
为什么我的 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 之前缺少 else。我认为这是一个错字,因为我在这里重新输入了它而不是复制粘贴,那个因为我嵌套了更多 if-elses 并且事情变得混乱(这是谷歌翻译)。
毕竟很愚蠢。
jjv360 请将此作为答案发布。
【问题讨论】:
-
NSLog 中的
term变量是什么?不应该是myObj吗? (或者反过来……) -
是的,你是对的。我试图通过更改 var 名称使其更符合逻辑,但我忘记了日志记录语句。
-
另外,第一条和第二条
if语句之间缺少else... -
两个问题:1) 你为什么不使用 NSStrings 2) 如果你使用 NSStrings,它会起作用吗?另外,您是否尝试过添加一个
or语句,允许该类为[NSCFString class]? -
@Cake 1. 我别无选择。说 @"cetera" 会自动创建一个 NSCFString。 2. NSCFString 类是私有的。