Cocoa touch NSIntegers返回<;零>;而不是0

Cocoa touch NSIntegers返回<;零>;而不是0,cocoa-touch,ios7,Cocoa Touch,Ios7,我的应用程序中有一个行为0到5的选择器,选择定义如下: @property (assign) NSInteger pickerRowSelected; 启动时,我将pickerowselected指定为-1,这样我就可以确保用户确实更改了一些内容。然而,这不起作用,我想要一些关于更好解决方案的建议 我注意到的第一个问题是,如果用户选择第0行,则此代码失败: if (self.pickerRowSelected >= 0) { 当我在gdb中发布[self pickerRowSelect

我的应用程序中有一个行为0到5的选择器,选择定义如下:

@property (assign) NSInteger pickerRowSelected;
启动时,我将
pickerowselected
指定为-1,这样我就可以确保用户确实更改了一些内容。然而,这不起作用,我想要一些关于更好解决方案的建议

我注意到的第一个问题是,如果用户选择第0行,则此代码失败:

if (self.pickerRowSelected >= 0) {
当我在gdb中发布
[self pickerRowSelected]
时,我得到了
。为了一只云雀,我这样做了:

if (self.pickerRowSelected == nil || self.pickerRowSelected >= 0) {

尽管编译器抱怨,但这还是奏效了。但是我认为nil在NSInteger中是零,那么有人能解释为什么
if
失败了吗?关于正确测试方法的建议?

问题在别处。nil等于0。您在GDB中获得零,因为您正在使用 po-xyz 对于需要使用的非指针类型 p-xyz


你能发布完整的代码吗?

你什么时候写
self.pickerRowSelected=-1?何时运行该
if
语句?要检查该值,请使用
p[self-pickerowselected]
。还有,为什么要使用gdb而不是lldb?啊,我知道如果我使用p[self-pickerowselected],那么我会得到“0”。嗯。