iOS将NSInteger与NSInteger进行比较

iOS将NSInteger与NSInteger进行比较,ios,objective-c,Ios,Objective C,我试图相互比较数值,但我得到警告“比较不同符号的整数:'NSInteger'(又名'inti')和'NSInteger'(又名'unsigned int') 这是合乎逻辑的,因为我这样做;)。但是我如何修复此警告。这是引发此警告的代码: if (page >= self.controllers.count || page < 0) return; if(page>=self.controllers.count | | page

我试图相互比较数值,但我得到警告“比较不同符号的整数:'NSInteger'(又名'inti')和'NSInteger'(又名'unsigned int')

这是合乎逻辑的,因为我这样做;)。但是我如何修复此警告。这是引发此警告的代码:

if (page >= self.controllers.count || page < 0)
    return;
if(page>=self.controllers.count | | page<0)
返回;

页面可以是-1,因此它是一个NSInteger,但count返回一个NSInteger。

在使用-1的地方使用NSInteger和NSNotFound,而不是对页面和-1使用NSInteger

然后你在比较相同的类型

if (page >= self.controllers.count || page == NSNotFound)
    return;

所以当我通过-1时,我应该通过NSNotFound。这就是你的意思吗?是的,没错。你用-1表示没有页面。而用NSNotFound。我刚刚检查了当我通过-1时,它自动是NSNotFound。这是真的吗?@MouNtant你正试图将一个整数的值设置为-1,这可能就是为什么你会得到NSNotFound,因为那不是一个valid操作。但是,它现在可能工作,但将来可能不会。如果您正在检查NSNotFound,最好显式返回NSNotFound。不完全是,但有点。如果您将负数传递给无符号变量,它将循环。NSNotFound可能定义为NSIntegerMax(这是-1可能循环的对象),但这并不能保证。所以传递NSNotFound,如果更高版本的操作系统更改了NSNotFound的定义,您将是安全的。