如何处理NSMutableArrays中的布尔值?

Ana*_*awa 4 cocoa-touch boolean objective-c nsmutablearray

有人能告诉我为什么我的应用程序在这里崩溃了吗?

以及当我用NSString值替换YES对象时它为什么不崩溃?

我想要做的就是将布尔数据存储到数组中并稍后修改这些数据,有人可以告诉我如何做到这一点吗?

- (void)viewDidLoad {
    [super viewDidLoad];
    NSMutableArray* arr = [[NSMutableArray alloc] initWithObjects:YES, YES, YES, YES, nil];
    NSLog([arr objectAtIndex:1]);
}
Run Code Online (Sandbox Code Playgroud)

ken*_*ytm 14

是和否是BOOL,它不是 Objective-C类.Foundation容器只能存储Objective-C对象.

你需要将它们包装在NSNumber中,例如:

NSNumber* yesObj = [NSNumber numberWithBool:YES];
NSMutableArray* arr = [[NSMutableArray alloc] initWithObjects:
                                               yesObj, yesObj, yesObj, yesObj, nil];
NSLog(@"%d", [[arr objectAtIndex:1] boolValue]);
Run Code Online (Sandbox Code Playgroud)

它接受NSString的原因是因为NSString 一种Objective-C类.