【发布时间】: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