我希望得到一些帮助来理解为什么我需要重新转换我的变量,因为它从一开始就是一个字符串。
代码如下:
+ (BOOL)hasOperandComponents:(NSString *)operandToTest
{
NSArray *componentsOfOperand = [[NSString stringWithFormat:@"%@",operandToTest] componentsSeparatedByString:@" "];
if (componentsOfOperand.count>1) return YES; return NO;
}
如果我不使用对“stringWithFormat”的嵌入式调用,那么我会得到一个相当常见的错误:
-[__NSCFNumber componentsSeparatedByString:]: unrecognized selector sent to instance
我已经能够通过搜索其他 Q 和 A 找到此错误含义的答案以及如何避免它(参见我上面的代码)...但是没有很好的解释为什么我的 operandToTest 似乎“忘记”它是一个 NSString 并成为一个 _NSCFNumber。
我怀疑这是因为这是一个类方法...但是当 NSString *operandToTest 的特定实例被传递给类方法时,为什么这很重要?
请帮忙?
最佳答案
问题是您没有字符串开头。您作为 operandToTest
传递给方法的值实际上是一个 NSNumber*
。您需要查看调用函数以找出原因。
关于objective-c - 为什么 NSString 'forgetting' 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9320526/