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]