programing

목표 C 부울 배열

telecom 2023. 8. 28. 20:49
반응형

목표 C 부울 배열

나는 객관-c에서 불리언 배열을 활용해야 합니다.대부분 설정되어 있지만 컴파일러는 다음 명령문에 경고를 보냅니다.

[updated_users replaceObjectAtIndex:index withObject:YES];

저는 이것이 YES가 단순히 물체가 아니기 때문이라고 확신합니다. 그것은 원시적인 것이기 때문입니다.그럼에도 불구하고, 저는 이것을 해야 하며, 그것을 어떻게 달성할 것인지에 대한 조언을 해주시면 감사하겠습니다.

감사해요.

네, 바로 그렇습니다. NS* 컨테이너는 Objective-C 개체만 저장할 수 있고 원시 유형은 저장할 수 없습니다.

NS Number로 마무리하여 원하는 작업을 수행할 수 있어야 합니다.

[updated_users replaceObjectAtIndex:index withObject:[NSNumber numberWithBool:YES]]

또는 를 사용하여@(YES)이것으로 끝입니다.BOOL순식간에NSNumber

[updated_users replaceObjectAtIndex:index withObject:@(YES)]]

그런 다음 boolValue를 꺼낼 수 있습니다.

BOOL mine = [[updated_users objectAtIndex:index] boolValue];

배열에 유효한 개체가 포함되어 있고 C-style 배열이 아니라고 가정합니다.

#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-array를 사용합니다.

BOOL array[100];
array[31] = YES;

조지 말대로 C 배열을 사용해요

BOOL myArray[10];

for (int i = 0; i < 10; i++){
  myArray[i] = NO;
}

if (myArray[2]){
   //do things;
}

마르틴, "myArray"는 조지의 예에서 "array"를 사용하는 이름입니다.

XCode 4.4부터는 목표-C 리터럴을 사용할 수 있습니다.

[updated_users replaceObjectAtIndex:index withObject:@YES];

어디에@YES의 값과 같습니다.[NSNumber numberWithBool:YES]

컬렉션이 크거나 objc 개체보다 빠르게 수집하려면CFBitVector/CFMutableBitVector유형이 CoreFoundation에 있습니다.NS와 함께 제공되지 않는 CF-Collections 유형 중 하나이지만 원하는 경우 Objc 클래스로 빠르게 포장할 수 있습니다.

언급URL : https://stackoverflow.com/questions/628343/objective-c-boolean-array

반응형