我需要在objective-c中使用一系列布尔值.我已经完成了它的设置,但编译器会在以下语句中发出警告:
[updated_users replaceObjectAtIndex:index withObject:YES];
这是,我敢肯定,因为YES根本不是一个对象; 这是一个原始的.无论如何,我需要这样做,并非常感谢如何实现它的建议.
谢谢.
是的,这正是它的原因: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];
假设您的数组包含有效对象(并且不是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阵列.
BOOL myArray[10]; for (int i = 0; i < 10; i++){ myArray[i] = NO; } if (myArray[2]){ //do things; }
Martijn,"myArray"是你使用的名字,在georg的例子中是"array".