[objective-c] Objective-C에서 NSNumber를 int로 변환

NSDictionary에 추가하기 전에 int를 NSNumber로 변환 [NSNumber numberWithInt:42]하거나 사용합니다 @(42).

int intValue = 42;
NSNumber *numberValue = [NSNumber numberWithInt:intValue];
NSDictionary *dict = @{ @"integer" : numberValue };

NSDictionary에서 값을 검색 할 때 NSNumber에서 int로 다시 변환하려면 어떻게해야합니까?

NSNumber *number = dict[@"integer"];
int *intNumber = // ...?

이렇게하면 캐스팅이 필요하다는 예외가 발생합니다.

int number = (int)dict[@"integer"];



답변

설명서를 살펴보십시오 . intValue방법을 사용하십시오 :

NSNumber *number = [dict objectForKey:@"integer"];
int intValue = [number intValue];


답변

NSInteger가능 하면 데이터 유형을 고수해야 합니다. 따라서 다음과 같은 번호를 생성합니다.

NSInteger myValue = 1;
NSNumber *number = [NSNumber numberWithInteger: myValue];

디코딩은 integerValue다음 방법으로 작동합니다 .

NSInteger value = [number integerValue];


답변

NSNumber 메서드 사용 intValue

다음은 Apple 참조 문서입니다.


답변

덜 장황한 접근 방식 :

int number = [dict[@"integer"] intValue];


답변

테스트 된 한 줄 :

int number = ((NSNumber*)[dict objectForKey:@"integer"]).intValue;


답변