指针和整数问题之间的比较

时间:2011-08-01 11:26:22

标签: iphone objective-c ios

我有一个条件语句,我需要一些语法帮助:

if (mySegment.selectedSegmentIndex == 0 && [[[dict objectForKey:[keys objectAtIndex:row]] objectAtIndex:0] == 8 ) {
NSLog(@"test");
}

我收到comparison between a pointer and integer problem警告。我需要一个基于选择的段值的条件,然后将其与从字典对象返回的值进行比较。

感谢您的帮助。

3 个答案:

答案 0 :(得分:6)

NSDictionary对象只能包含NSNumber实例,而不能包含整数等基本标量类型。这就是你收到警告的原因。

请尝试使用此行:

if (mySegment.selectedSegmentIndex == 0 && [[[[dict objectForKey:[keys objectAtIndex:row]] objectAtIndex:0] integerValue] == 8 ) {
...
}

请注意,我已经在从数组返回的对象上添加了对integerValue的调用。

答案 1 :(得分:6)

dict值转换为整数然后比较

试试这个:

if (mySegment.selectedSegmentIndex == 0 && [[[dict objectForKey:[keys objectAtIndex:row]] objectAtIndex:0]intValue] == 8 ) {
NSLog(@"test");
}

答案 2 :(得分:2)

[[[dict objectForKey:[keys objectAtIndex:row]] objectAtIndex:0]返回一个对象,在与8进行比较之前必须将其强制转换为int。

((int)[[[dict objectForKey:[keys objectAtIndex:row]] objectAtIndex:0])== 8应该为你做到这一点。