好的,这是该死的东西:
- (void)setMinimumNumberOfSides:(NSNumber *)newMinimumNumberOfSides {
if (newMinimumNumberOfSides != minimumNumberOfSides) {
NSNumber *minimum = [[NSNumber alloc] initWithInt:(int)2];
if (newMinimumNumberOfSides > minimum) {
[newMinimumNumberOfSides retain];
[minimumNumberOfSides release];
minimumNumberOfSides = newMinimumNumberOfSides;
} else {
NSLog(@"setMinimumNumberOfSides: Invalid number of sides: %@ is smaller than the minimum of %@ allowed.",
newMinimumNumberOfSides, minimum);
}
[minimum release];
[newMinimumNumberOfSides release];
}
}
那里有一些奇怪的事情!问题是我的if(newMinimumNumberOfSides>最小){}条件。即使newMinimumNumberOfSides比最小值更重要,它也会进入else语句。
我做了:
NSNumber *minimum = [[NSNumber alloc] initWithInt:(int)6];
[polygon setMinimumNumberOfSides:minimum];
大于2的方式。我收到了错误消息......
我试过NSLog那两个,它给了我正确的数字......那么这是怎么回事?
非常感谢!
答案 0 :(得分:4)
我认为您需要将if语句更改为:
if ([newMinimumNumberOfSides intValue] > [minimum intValue])
NSNumber是一个对象,因此您必须先获取其整数值,然后才能在比较中开始使用它。
答案 1 :(得分:1)
您需要使用以下方法来比较NSNumber对象:
- (NSComparisonResult)compare:(NSNumber *)aNumber
但更好的是将它们转换为c ints:[myNSNumberValue inValue]