为什么我使用以下代码获取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];
}
答案 0 :(得分:2)
NSArray *patientenWeiblich = [NSArray arrayWithObjects:NO, NO, NO , nil];
您不能将原始类型放入NSArray中。在你的情况下,编译器是静默的,因为NO
为0,实际上是nil
。所以,你得到一个空的NSArray。
您应首先使用NSNumber
包装它们:
NSArray *patientenWeiblich = [NSArray arrayWithObjects:@(NO), @(NO), @(NO) , nil];
然后通过以下方式获取值:
[[patientenWeiblich objectAtIndex:i] boolValue];
答案 1 :(得分:1)
您不能按原样放置bool值。而是使用@(NO)。这应该有用。
答案 2 :(得分:0)
NO
不是对象,但您需要将对象存储在数组中。所以
使用[NSNull null]
或@(NO
)代替NO
。