객관적인 C 부울 배열
-
06-07-2019 - |
문제
목표 c에서 부울 배열을 사용해야합니다. 주로 설정했지만 컴파일러는 다음과 같이 경고를합니다.
[updated_users replaceObjectAtIndex:index withObject:YES];
예는 단순히 대상이 아니기 때문에 이것은 확실합니다. 원시입니다. 어쨌든, 나는 이것을해야하며, 그것을 달성하는 방법에 대한 조언에 크게 감사 할 것입니다.
감사.
해결책
그렇습니다. 그것이 바로 그게 바로 그 것입니다.
nsnumber로 싸서 원하는 것을 달성 할 수 있어야합니다.
[updated_users replaceObjectAtIndex:index withObject:[NSNumber numberWithBool:YES]]
또는 사용하여 @(YES)
포장 a BOOL
에서 NSNumber
[updated_users replaceObjectAtIndex:index withObject:@(YES)]]
그런 다음 boolvalue를 꺼낼 수 있습니다.
BOOL mine = [[updated_users objectAtIndex:index] boolValue];
다른 팁
배열이 유효한 개체가 포함되어 있다고 가정하면 (그리고 C 스타일 배열이 아님) :
#define kNSTrue ((id) kCFBooleanTrue)
#define kNSFalse ((id) kCFBooleanFalse)
#define NSBool(x) ((x) ? kNSTrue : kNSFalse)
[updated_users replaceObjectAtIndex:index withObject:NSBool(YES)];
당신은 저장할 수 있습니다 NSNumbers
:
[updated_users replaceObjectAtIndex:index
withObject:[NSNumber numberWithBool:YES]];
또는 귀하의 요구에 따라 C- 어레이를 사용하십시오.
BOOL array[100];
array[31] = YES;
Georg와 마찬가지로 C-Array를 사용하십시오.
BOOL myArray[10];
for (int i = 0; i < 10; i++){
myArray[i] = NO;
}
if (myArray[2]){
//do things;
}
Martijn, "MyArray"는 Georg의 예에서 "배열"을 사용하는 이름입니다.
Xcode 4.4에서 Objective-C 리터럴을 사용할 수 있습니다.
[updated_users replaceObjectAtIndex:index withObject:@YES];
어디에 @YES
동일합니다 [NSNumber numberWithBool:YES]
컬렉션이 크거나 OBJC 객체보다 빠르기를 원한다면 CFBitVector
/CFMutableBitVector
코어 파운드에서 발견 된 유형. CF 수집 유형 중 하나입니다 ~ 아니다 NS 대응 물이있는 배송이지만 원하는 경우 OBJC 클래스에 빨리 감을 수 있습니다.