所以出于某种原因,在某种方法中,我的NSNumber
总是nil
而且它让我疯狂。
如果用户在我的选择器中选择了一行,则会调用它并且工作正常:
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
self.query.activityLevel = [NSNumber numberWithInt:[[[self.activityArray objectAtIndex:row]objectForKey:@"key"]intValue]];
}
但是,当用户没有选择一行,只是继续下一个VC时,我会检查activityLevel
是否为nil
,并将其设置为1
如果是的话。
- (void)donePressed {
if (!self.query.activityLevel) {
self.query.activityLevel = [NSNumber numberWithInt:2];
}
NSNumber *calories = [Calculations numberOfCaloriesNeededForQuery:self.query];
[self dismissModalViewControllerAnimated:YES];
}
问题是,每当用户没有选择一行并且它点击self.query.activityLevel = [NSNumber numberWithInt:2];
时,如果我打印该对象,它仍然是nil
。我不知道为什么。我设置了一个断点,它正在击中那条线......
答案 0 :(得分:4)
也许你得到的是因为self.query
的值也是零,所以你在nil对象上设置一个值,你就得零...
这有点令人困惑但是在另一种语言中你通常会在这种情况下得到NullPointer异常,在目标C中,将消息发送给nil是合法的,所以要注意这些情况...