代码之家  ›  专栏  ›  技术社区  ›  suse

如何在Objective-C中将NSNumber转换为int

  •  117
  • suse  · 技术社区  · 14 年前

    我用 [NSNumber numberWithInt:42] @(42) 要在将int添加到NSDictionary之前将其转换为NSNumber,请执行以下操作:

    int intValue = 42;
    NSNumber *numberValue = [NSNumber numberWithInt:intValue];
    NSDictionary *dict = @{ @"integer" : numberValue };
    

    从NSDictionary检索值时,如何将其从NSNumber转换回int?

    NSNumber *number = dict[@"integer"];
    int *intNumber = // ...?
    

    当我这样做时,它抛出一个异常,表示强制转换是必需的:

    int number = (int)dict[@"integer"];
    
    4 回复  |  直到 5 年前
        1
  •  196
  •   pkamb santoshIOS    5 年前

    看一看这个 documentation . 使用 intValue 方法:

    NSNumber *number = [dict objectForKey:@"integer"];
    int intValue = [number intValue];
    
        2
  •  61
  •   Max Seelemann    14 年前

    你应该遵守规则 NSInteger 数据类型。所以你要创建这样的数字:

    NSInteger myValue = 1;
    NSNumber *number = [NSNumber numberWithInteger: myValue];
    

    解码与 integerValue

    NSInteger value = [number integerValue];
    
        3
  •  4
  •   rano    14 年前

    使用NSNumber方法 intValue

    Apple reference documentation

        4
  •  1
  •   Giorgio Barchiesi    5 年前

    int number = ((NSNumber*)[dict objectForKey:@"integer"]).intValue;
    
        5
  •  1
  •   pkamb santoshIOS    5 年前

    不那么冗长的方法:

    int number = [dict[@"integer"] intValue];