【问题标题】:how to extract 64 bit signed integer value如何提取64位有符号整数值
【发布时间】:2011-04-12 13:46:02
【问题描述】:

我正在查询一个 NSDictionary 的值。因为我遇到了问题,所以我打印了这个对象。它向我展示了以下内容:

<CFString 0x5d33630 [0x26af380]>{contents = "myDictionaryItem"} = <CFNumber 0x5d58940 [0x26af380]>{value = +1286301600, type = kCFNumberSInt64Type}

所以它是带符号的 64 位整数类型。所以我试着像这样提取值

NSString *myString = [NSString stringWithFormat:@"%qi", [myDictionary objectForKey:@"myDictionaryItem"]];

这给了我一个值,但该值不是字典中的值。

我也试过了

long long my64bitsignedIntegerValue = (long long)[myDictionary objectForKey:@"myDictionaryItem"];

但我收到警告 Cast from pointer to integer of different size。这不起作用,因为stringWithFormat 返回一个id 类型的值。我发现了这个post,其中id 的类型是UInt32。并且有符号的 64 位整数不是无符号的 32 位整数,所以我收到了这个警告。如果我忽略警告,值仍然是错误的。

我想拥有的价值是例如1286301600。一个有符号整数(-2.147.483.648 到 2.147.483.647)应该做我想做的事。我不明白 Cocoa 为什么要尝试制作 64 位有符号整数。

如何提取字典的 64 位有符号整数并将其用作变量?

【问题讨论】:

    标签: iphone objective-c cocoa-touch 64-bit integer


    【解决方案1】:
    [myDictionary objectForKey:@"myDictionaryItem"]
    

    返回对象(我想是 NSNumber),而不是标量数。如果它确实是一个 NSNUmber 对象,那么您可以使用以下函数之一从中获取一个数字:

    -intValue
    -longValue
    -longLongValue
    

    以下行必须从您的号码中生成正确的字符串:

    NSString *myString = [NSString stringWithFormat:@"%qi", [[myDictionary objectForKey:@"myDictionaryItem"] intValue]];
    

    【讨论】:

      【解决方案2】:

      你想要:

      [[myDictionary objectForKey:@"myDictionaryItem"] integerValue];
      

      [[myDictionary objectForKey:@"myDictionaryItem"] longLongValue];
      

      CFNumber/NSNumber 是一个数字原语的包装对象。

      【讨论】:

        【解决方案3】:

        我猜它是一个 NSNumber,所以这样的东西应该可以工作:

        NSNumber *num = [myDictionary objectForKey:@"myDictionaryItem"];
        long numAsLong = [num longValue];
        long long numAsLongLong = [num longLongValue];
        

        等等

        【讨论】:

          猜你喜欢
          • 2012-02-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-05
          • 2016-06-28
          • 1970-01-01
          • 2011-11-10
          相关资源
          最近更新 更多