我希望能得到一些帮助,以了解为什么从一开始就是字符串时就需要重新转换变量。
这是代码:
+ (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。
我怀疑这是因为这是一个Class方法...但是当将NSString * operandToTest的特定实例传递给class方法时,为什么会那么重要呢?
请帮忙?
最佳答案
问题是您没有字符串开头。实际上,您要作为operandToTest
传递给方法的值是NSNumber*
。您需要查看调用函数以找出原因。
关于objective-c - 为什么NSString会“忘记”它的含义?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9320526/