Objective c 客观条件操作员古怪
好吧,这是该死的事情:Objective c 客观条件操作员古怪,objective-c,operators,conditional-statements,Objective C,Operators,Conditional Statements,好吧,这是该死的事情: - (void)setMinimumNumberOfSides:(NSNumber *)newMinimumNumberOfSides { if (newMinimumNumberOfSides != minimumNumberOfSides) { NSNumber *minimum = [[NSNumber alloc] initWithInt:(int)2]; if (newMinimumNumberOfSides >
- (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>minimum){}条件。即使newMinimumNumberOfSides的值大于最小值,它也会进入else语句
我做到了:
NSNumber *minimum = [[NSNumber alloc] initWithInt:(int)6];
[polygon setMinimumNumberOfSides:minimum];
这比2大得多。我收到了我的错误信息
我试着记录这两个,它给了我正确的数字。。。这是怎么回事
非常感谢 我认为您需要将if语句更改为:
if ([newMinimumNumberOfSides intValue] > [minimum intValue])
NSNumber是一个对象,因此必须先获取其整数值,然后才能开始在比较中使用它 我认为您需要将if语句更改为:
if ([newMinimumNumberOfSides intValue] > [minimum intValue])
NSNumber是一个对象,因此必须先获取其整数值,然后才能开始在比较中使用它 您需要使用以下方法来比较NSNumber对象:
- (NSComparisonResult)compare:(NSNumber *)aNumber
但更好的方法是将它们转换为c整数:
[myNSNumberValue inValue]
您需要使用以下方法来比较NSNumber对象:
- (NSComparisonResult)compare:(NSNumber *)aNumber
但更好的方法是将它们转换成c整数:[myNSNumberValue inValue]