Objective c 如何处理NSMutableArray中的布尔值?

Objective c 如何处理NSMutableArray中的布尔值?,objective-c,cocoa-touch,nsmutablearray,boolean,Objective C,Cocoa Touch,Nsmutablearray,Boolean,有人能告诉我为什么我的应用程序在这里崩溃吗 为什么用NSString值替换YES对象时不会崩溃 我要做的就是将布尔数据存储到数组中,然后修改这些数据, 有人能告诉我怎么做吗 - (void)viewDidLoad { [super viewDidLoad]; NSMutableArray* arr = [[NSMutableArray alloc] initWithObjects:YES, YES, YES, YES, nil]; NSLog([arr objectAtI

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

为什么用NSString值替换YES对象时不会崩溃

我要做的就是将布尔数据存储到数组中,然后修改这些数据, 有人能告诉我怎么做吗

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

是和否是布尔,这不是Objective-C类。基金会容器只能存储Objtovi-C对象。 您需要将它们包装在NSNumber中,如:

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

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

要获得原始的
BOOL
值,可以使用
BOOL b=[[array objectAtIndex:i]boolValue]
。感谢您的快速回复,我希望Objective-C具有Java中的自动装箱/拆箱功能,无论如何,objective-c确实是一种痛苦的语言:S@anasnakawa:Objective-C比普通的C要薄得多,而普通的C正是最痛苦的地方。@anasnakawa:这是我最初的想法,但在许多方面Objective-C比Java更接近于真正面向对象编程的精神。一旦你习惯了这些怪癖,你可能会发现它会更好。