Iphone 如何在if中比较NSN编号

Iphone 如何在if中比较NSN编号,iphone,objective-c,ios,Iphone,Objective C,Ios,如何: 这似乎没有建立 对象:NSInteger通常是纯int类型,因此您的代码应该可以正常工作 如果myNSNumber是一个NSNumber对象(如变量名所示),则应提取其int值: if (myNSNumber == 1) { ... } 如果myNSNUmber是NSNumber,则代码应为 if ([myNSNumber intValue] == 1) { ... } if (myNSNumber == 1) { ... } 如果它是NSInteger,则可以直接将其

如何:

这似乎没有建立


对象:

NSInteger通常是纯int类型,因此您的代码应该可以正常工作

如果myNSNumber是一个NSNumber对象(如变量名所示),则应提取其int值:

if (myNSNumber == 1)
{
 ...
}
如果myNSNUmber是
NSNumber
,则代码应为

if ([myNSNumber intValue] == 1)
{
 ...
}
if (myNSNumber == 1) {
    ...
}
如果它是
NSInteger
,则可以直接将其与整数文本进行比较。因为
NSInteger
是一种基本数据类型

if ([myNSNumber intValue] == 1) {
    ...
}
注意:确保您的声明中没有
*
。您的
NSInteger
声明应为

if ([myNSNumber intValue] == 1)
{
 ...
}
if (myNSNumber == 1) {
    ...
}
以下是@BoltClock最近发布的答案


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

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


NSNumber是一个结构,因此不能将其与整数进行比较。Simon发布的内容是正确的。
myNSNumber
是NSInteger还是
NSNumber
?如果是
NSInteger
请确保声明中没有
*
。标题似乎不正确。NSInteger测试可以编译,我想你指的是NSNumber。