iphone - 为什么我的 NSNumber 总是零?

标签 iphone objective-c cocoa-touch

所以出于某种原因,在某种方法中,我的 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/

相关文章:

iphone - 如何对表格 View 进行排序 - IOS

ios - 如何在 iOS 中正确设置背景图像

iphone - Objective-C - NSNotificationCenter 放在哪里?

iphone - 如何调用performSelectorOnMainThread : with an selector that takes > 1 arguments?

ios - 我在导入类相关问题时遇到错误..已经导入类,但在 xib 项目 ios 中为 "unknown type name"

iphone - 如何设置以下代码片段中的recipientItems的值?

iOS - 当我将方法移动到另一个类时,MKMapView 覆盖不会呈现

iOS - 带有圆形手势的图像裁剪

ios - 是否有一种简单的方法来检查是否存在传递给 NSString 上的 substringWithRange 的 NSRange(这样不会导致错误)?

iphone - 为什么这个 NSArray 不起作用?我正在尝试向其中添加对象