我希望能得到一些帮助,以了解为什么从一开始就是字符串时就需要重新转换变量。

这是代码:

+ (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/

10-12 01:41
查看更多