BOOL을 삽입하는 Objective-C 사전
좋아요, 좀 헷갈리네요. 아마도 사소한 것입니다.
다음과 같은 함수가 있습니다.
- (void)getNumbersForNews:(BOOL)news andMails:(BOOL)mails {
NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init];
[parameters setValue:news forKey:@"getNews"];
[parameters setValue:mails forKey:@"getMails"];...}
setValue:forKey:
또는 사용하든 상관 없습니다. setObject:ForKey:
항상 경고가 표시됩니다.
"세트의 인수 1 전달 ... 캐스트없이 정수에서 포인터를 만듭니다."...
도대체 어떻게 사전에 부울을 삽입하고 있습니까?
의 값은 NSDictionary
집집합니다. 이 문제를 해결하기 위해 부울을 NSNumber
해결 해야 합니다.
[parameters setValue:[NSNumber numberWithBool:news] forKey:@"news"];
[parameters setValue:[NSNumber numberWithBool:mails] forKey:@"mails"];
Objective-C 컨테이너는 Objective-C 개체 만 사용할 수 있으므로 개체에 BOOL을 래핑해야합니다. NSNumber를 생성 [NSNumber numberWithBool]
하고 결과를 표현할 수 있습니다.
나중에 NSNumber를 사용하여 부울 값을 다시 사용할 수 있습니다 -boolValue
.
BOOL은 수업이 아닙니다. int의 동의어이며 값으로 0 또는 1을 갖습니다. 결과적으로는 포함되는 구조에 놓이지 않을 것입니다.
NSNumber를 사용하여 모든 정수 유형에 대한 개체 래퍼를 만들 수 있습니다. [NSNumber numberWithBool:]
를 얻기 위해 object-호출 할 수 있는 생성자 가 있습니다. 그리고 사용할 수 있습니다. 더 많은 것을 사용하여 [obj boolValue]
..
참조를위한 최신 코드 :
parameters[@"getNews"] = @(news);
를 object- 삽입 @"YES"
하거나 @"NO"
문자열로 묶을 수 있으며 코코아는 다시 읽으면이를 부울로 캐스팅합니다.
명명 된 동일한 공장 방법을 사용하여 사전을 만드는 것이 좋습니다 dictionaryWithObjectsAndKeys:
.
@Steve Harrison의 답변을 보면 한 가지 의견이 있습니다. 어떤 언어가 예를 들어 표현 속성을 전달하는 데 작동하지 않습니다.
[parameters setValue:[NSNumber numberWithBool:myObject.hasNews] forKey:@"news"];
이것은 news
매개 변수에서 키를 널 (null)로 설정합니다 NSDictionary
(어떤 이유로 인해 그 이유를 실제로 이해할 수 없습니다 )
내 유일한 해결책은 다음과 같이 @Eimantas의 방식을 사용하는 것입니다.
[parameters setValue:[NSNumber numberWithBool:myObject.hasNews ? @"YES" : @"NO"] forKey:@"news"];
이것은 완벽하게 작동했습니다. BOOL
직접 통과하는 것이 작동하지 않는 이유를 묻지. 그러나 주문을 찾았습니다. 어떤 아이디어?
참고 URL : https://stackoverflow.com/questions/2108042/objective-c-dictionary-inserting-a-bool
'ProgramingTip' 카테고리의 다른 글
날짜 형식은 날짜 형식을 날짜 형식화하지 않습니다. (0) | 2020.11.26 |
---|---|
C # 사전 하나의 키 많은 값 (0) | 2020.11.26 |
jquery를 사용하여 화면의 '높이'를 얻는 방법 (0) | 2020.11.26 |
Objective C에서 NSNumber 비교 (0) | 2020.11.26 |
BinaryReader의 모든 바이트를 소비하는 우아한 방법? (0) | 2020.11.26 |