Objective C에서 NSNumber 비교
저는 Obj-C의 하나 이고이 시나리오에서 혼란 스럽습니다. 다음 코드가 있습니다.
if (number1 < number2) {
NSLog(@"THE FOLLOWING NUMBER ");
NSLog(@"%@", number1);
NSLog(@"IS LESS THAN");
NSLog(@"%@", number2);
}
이 코드를 실행하면 다음과 같이 정말 이상한 결과가 나타납니다.
2011-07-06 20:38:18.044 helloworld[1014:207] THE FOLLOWING NUMBER
2011-07-06 20:38:18.047 helloworld[1014:207] 190.8776
2011-07-06 20:38:18.050 helloworld[1014:207] IS LESS THAN
2011-07-06 20:38:18.053 helloworld[1014:207] 96.75866
두 숫자 모두 NSNumber 객체입니다. 어떻게 이런 일이 있습니까? 화면에서 스프라이트 사이의 거리를 찾아 두 숫자를 얻습니다.
어떤 단서 나 조언 정말 감사하겠습니다
나는 숫자 1과 숫자 2가 객체에 대한 포인터라고 가정합니다. <기호는 포인터를 비교하고 있습니다.
실제 floatValue 또는 doubleValue를 비교해야합니다.
if ([number1 doubleValue] < [number2 doubleValue])
....
두 개의 NSNumber 속성이 동일한 경우 값을 유지 간단히 테스트하려는 경우 Apple 문서에서 다음을 사용하는 경우.
- (BOOL)isEqualToNumber:(NSNumber *)aNumber
두 개의 NSNumber 값을 비교하는 가장 간단하고 쉬운 방법입니다.
예를 들면 :
if ([someNumber isEqualToNumber:someOtherNumber])
{
// The numbers hold the same value
}
else
{
// The numbers hold different values
}
문서에는 또한 "이 방법은 비교하는 것보다 더 먼저입니다."라고합니다.
가치가 더 작은 지 더 큰지 알아야 할 때마다 지 더 큰지
- (NSComparisonResult)compare:(NSNumber *)aNumber
하지만 개인적으로 저는 그 시점에서 정수 값 (또는 이중 값)을 꺼내고 일반 <및> 연산자를 사용하여 비교를 수행하는 것을 선호합니다. 이렇게하면 코드를 쉽게 읽을 수 있기 때문입니다.
if (firstNumber.intValue > secondNumber.intValue)
{
// First number is greater than the second number
}
else if (firstNumber.intValue == secondNumber.intValue)
{
// The two numbers have the same value
}
else
{
// The first number is smaller than the second number
}
제 생각에는 -compare :를 호출하는 것보다 읽기가 수준이 있습니다.
에릭
의 NSNumber에는 비교 방법이 있습니다 .- (NSComparisonResult) 비교 : (의 NSNumber를 *) 인 aNumber
if([numberOne compare:numberTwo] == NSOrderedSame)
{
// proceed
}
스위프트 3.1
let number1 = NSNumber(value: 10.2)
let number2 = NSNumber(value: 20.2)
let result = number1.compare(number2)
if result == .orderedAscending {
} else if result == .orderedDescending {
} else { // .orderedSame
}
참고 URL : https://stackoverflow.com/questions/6605262/comparing-nsnumbers-in-objective-c
'ProgramingTip' 카테고리의 다른 글
BOOL을 삽입하는 Objective-C 사전 (0) | 2020.11.26 |
---|---|
jquery를 사용하여 화면의 '높이'를 얻는 방법 (0) | 2020.11.26 |
BinaryReader의 모든 바이트를 소비하는 우아한 방법? (0) | 2020.11.26 |
Vim- 이전 위치로 이동 (0) | 2020.11.26 |
입력이 숫자 또는 문자 javascript인지 확인 (0) | 2020.11.26 |