在Objective C中存储long long值

时间:2010-10-15 04:31:09

标签: iphone objective-c xcode

我正在使用返回JSON字典的API。其中一个键是“Variant Hash”,相应的数据是这样的整数:-7331108254952843887或6209894088655053576.我假设这是一个很长的值。我正在使用NSCoder序列化这些数据,我不确定使用哪种encodeValue:方法。没有encodeLongLongValue:forKey:。

另外,做NSLog(@“%@”,returnDictionary);显示整个字典结构,但是使用objectForKey:不起作用,因为密钥Variant Hash的对应值不是对象。

如何从字典中获取数据,以及如何将其存储在NSCoder中?

感谢您的帮助。

3 个答案:

答案 0 :(得分:4)

  

没有encodeLongLongValue:forKey:

不,但有一个encodeInt64:forKey:可以解决这个问题。

答案 1 :(得分:2)

根据您使用的JSON解析器,该数字将作为NSNumber,NSDecimalNumber,NSString或NSValue存储在字典中。 NSNumber(或NSDecimalNumber,它是一个子类)可能是最有可能的,但我会检查你的解析器的文档或代码。

假设是这种情况,你就会得到这样的价值。

NSNumber *numberValue = [myDictionary objectForKey:myKey];
long long longValue = [numberValue longLongValue];

我可能会在这段代码中实现一些类型检查,只是为了安全。

NSNumber符合NSCoding,因此您可以使用numberValue实例进行编码。

答案 2 :(得分:0)

如果速度不是您的主要考虑因素,请将其视为字符串并使用NSString*