NSNumber를 고정 값과 비교하는 더 좋은 방법이 있을까요? 조금 어색해 보입니다.NSNumber를 고정 값과 비교합니까?
if([myNumber isEqualToNumber:[NSNumber numberWithInt:0]]) NSLog(@"Zero");
...
게리
을 내가 -compare 사용할 수 있습니다 알고 있지만, 거의 같은 모양NSNumber를 고정 값과 비교하는 더 좋은 방법이 있을까요? 조금 어색해 보입니다.NSNumber를 고정 값과 비교합니까?
if([myNumber isEqualToNumber:[NSNumber numberWithInt:0]]) NSLog(@"Zero");
...
게리
을 내가 -compare 사용할 수 있습니다 알고 있지만, 거의 같은 모양방법에 대한 if ([myNumber intValue] == 0)
? (또는 < 또는>). 의 int, 플로트를 포함 할 수 있습니다
Doh :) 완벽하고 많은 감사합니다. Ben ... – fuzzygoat
숫자가 정수로 알려져있는 경우에만 작동합니다. 값이 0.4 인 NSNumber의 intValue는 0이됩니다. –
NSNumber
개체는 매우 빠르고 읽기 쉬운 (A NSNumber
의 intValue
에 비해) 등 벤의 접근 방식을 두 배로,하지만 당신은 myNumber
이 항상 보장 할 수있는 경우에만 제대로 작동 범위는 int
입니다 (향후 코드가 변경된 후에도 항상 적용됩니다).
정확한 유형이 myNumber
인 경우 실제로 접근 방법이 우수합니다.
// This will work regardless if myNumber is an int, double etc.
[myNumber isEqualToNumber:[NSNumber numberWithInt:0]]
큰 고정 소수점 수 또는 부동 소수점 수와 비교하면 어쨌든이 경로를 사용해야합니다. 를 Obj-C의
버그의 또 다른 미묘한 원인은'intValue'에서 잘못된 결과를 생성 할 수있는 서브 클래스 NSDecimalNumber입니다. +1 –
모든 것은 잠시 동안 약간 투박한 느낌 : 일찍 자리 문제를 도울 수있는 잘못된 유형으로의 NSNumber를 만들려고하면 또한, 엑스 코드의 최신 버전은 제대로 경고합니다 . – MJeffryes
리터럴을 사용하면 다음과 같이 매우 나쁘지 않습니다. [NSNumber isEqualToNumber : @ 0] –