All*_*lyn 38 c arrays primitive boolean objective-c
我需要在objective-c中使用一系列布尔值.我已经完成了它的设置,但编译器会在以下语句中发出警告:
[updated_users replaceObjectAtIndex:index withObject:YES];
Run Code Online (Sandbox Code Playgroud)
这是,我敢肯定,因为YES根本不是一个对象; 这是一个原始的.无论如何,我需要这样做,并非常感谢如何实现它的建议.
谢谢.
Nic*_*dge 72
是的,这正是它的原因:NS*容器只能存储Objective-C对象,而不是基本类型.
您应该能够通过将其包装在NSNumber中来完成您想要的任务:
[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];
And*_*ant 14
假设您的数组包含有效对象(并且不是c样式数组):
#define kNSTrue ((id) kCFBooleanTrue)
#define kNSFalse ((id) kCFBooleanFalse)
#define NSBool(x) ((x) ? kNSTrue : kNSFalse)
[updated_users replaceObjectAtIndex:index withObject:NSBool(YES)];
Run Code Online (Sandbox Code Playgroud)
Geo*_*lly 11
你可以存储NSNumbers:
[updated_users replaceObjectAtIndex:index
withObject:[NSNumber numberWithBool:YES]];
Run Code Online (Sandbox Code Playgroud)
或根据您的需要使用C阵列:
BOOL array[100];
array[31] = YES;
Run Code Online (Sandbox Code Playgroud)
像Georg说的那样,使用C阵列.
BOOL myArray[10];
for (int i = 0; i < 10; i++){
myArray[i] = NO;
}
if (myArray[2]){
//do things;
}
Run Code Online (Sandbox Code Playgroud)
Martijn,"myArray"是你使用的名字,在georg的例子中是"array".
从 XCode 4.4 开始,您可以使用 Objective-C 文字。
[updated_users replaceObjectAtIndex:index withObject:@YES];
哪里@YES相当于[NSNumber numberWithBool:YES]