所以出于某种原因,在某种方法中,我的 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 因为 self.query
的值也是 nil,所以你在 nil 对象上设置一个值,你得到 nil ...
这有点令人困惑,但在另一种语言中,您通常会在这种情况下遇到 NullPointer 异常,而在 Objective-C 中,向 nil 发送消息是合法的,因此请注意这些情况……
关于iphone - 为什么我的 NSNumber 总是零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10061100/