0

为什么我使用此代码收到 MSRangeException:

NSArray *patientenVornamen = [NSArray arrayWithObjects:@"Michael", @"Thomas", @"Martin", nil];
NSArray *patientenNachnamen = [NSArray arrayWithObjects:@"Miller", @"Townsend", @"Mullins", nil];
NSArray *patientenWeiblich = [NSArray arrayWithObjects:NO, NO, NO , nil];
NSArray *patientenGeburtsdatum = [NSArray arrayWithObjects:[NSDate date], [NSDate date], [NSDate date], nil];
for (int i = 0; i < 3; i++) {
    Patient *patient = [NSEntityDescription insertNewObjectForEntityForName:@"Patient" inManagedObjectContext:_coreDataHelper.context];
    patient.vorname = [patientenVornamen objectAtIndex:i];
    patient.nachname = [patientenNachnamen objectAtIndex:i];
    patient.geburtsdatum = [patientenGeburtsdatum objectAtIndex:i];
    patient.weiblich = [patientenWeiblich objectAtIndex:i];
}
4

3 回答 3

2
NSArray *patientenWeiblich = [NSArray arrayWithObjects:NO, NO, NO , nil];

您不能将原始类型放入 NSArray。在您的情况下,编译器保持沉默只是因为NO0 有效nil。所以,你得到一个空的 NSArray。

您应该首先将它们包装起来NSNumber

NSArray *patientenWeiblich = [NSArray arrayWithObjects:@(NO), @(NO), @(NO) , nil];

然后通过以下方式获得价值:

[[patientenWeiblich objectAtIndex:i] boolValue];
于 2014-01-26T21:52:52.113 回答
1

您不能按原样放置布尔值。而是使用@(NO)。那应该行得通。

于 2014-01-26T21:53:35.577 回答
0

NO不是对象,但您需要将对象存储在数组中。所以使用[NSNull null]or @(NO) 代替NO.

于 2014-01-26T21:52:33.610 回答