2010-01-16 4 views
0

이 좋아 여기 저주 일이 불확실성 :목표 - C Condtions 사업자

- (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가 최소값보다 greated 된 경우에도 else 문으로 이동합니다. 2.보다 훨씬 큰

NSNumber *minimum = [[NSNumber alloc] initWithInt:(int)6]; 
[polygon setMinimumNumberOfSides:minimum]; 

을 그리고

내가 그 두 NSLog하려고 내 오류 메시지를 ... 수신하고 나에게 올바른 번호를 제공합니다 .. :

은 내가 그랬어 그래서이 일이 어떻게 진행되고 있니?

고맙습니다.

답변

4

나는 변경할 필요가 있다고 생각 명세서에있는 경우 : 당신은 당신이 비교에 사용을 시작하기 전에의 정수 값을 얻을 그래서

if ([newMinimumNumberOfSides intValue] > [minimum intValue]) 

의 NSNumber는, 객체입니다.

+0

, 덕분에 많이! – TomShreds

1

당신의 NSNumber 객체를 비교하기 위해 다음과 같은 방법을 사용해야합니다

- (NSComparisonResult)compare:(NSNumber *)aNumber 

하지만, 더 좋은 단지의 C의 int로 변환 : [myNSNumberValue inValue] 아주 논리입니다