如何比较if中的NSNumber

时间:2011-01-25 11:26:26

标签: iphone objective-c ios

如何:

if (myNSNumber == 1)
{
 ...
}

这似乎没有构建

对象:

2 个答案:

答案 0 :(得分:16)

如果 myNSNUmber NSNumber,则应阅读您的代码,

if ([myNSNumber intValue] == 1) {
    ...
}

如果是NSInteger,您可以直接将其与整数文字进行比较。因为NSInteger是原始数据类型。

if (myNSNumber == 1) {
    ...
}

注意:请确保您的声明中没有*。您的NSInteger声明应该是

NSInteger myNSNUmber; // RIGHT
NSInteger *myNSNUmber; // WRONG, NSInteger is not a struct, but it is a primitive data type.

以下内容基于@ BoltClock的答案,他最近发布了here


但是如果由于某种原因需要使用指向NSInteger的指针(即NSInteger *),则需要取消引用指针以获取值:

if (*myNSNUmber == 11) {
}

答案 1 :(得分:3)

NSInteger通常是一个普通的int类型,所以你的代码应该可以正常工作。

如果myNSNumber是一个NSNumber对象(如变量名所示)那么你应该提取它的int值:

if ([myNSNumber intValue] == 1)
{
 ...
}