CFNumber到int或NSNumber?

时间:2013-03-24 00:24:06

标签: objective-c json nsdictionary nsnumber

我正在使用NSJSONSerialzation解析JSON字符串,然后将其转换为NSDictionary以使用键值对。 JSON字符串中的某些值由服务器作为整数发送,但是,NSDictionary将它们表示为CFNumber,例如:

<CFNumber 0xa581270 [0x1d7b4d8]>{value = +0, type = kCFNumberSInt32Type}

我怎样才能将它整齐地转换为int或NSNumber?

2 个答案:

答案 0 :(得分:5)

你可以因为toll-free bridging

而投出它
NSNumber *num = (NSNumber *)cfnum;

如果启用了ARC

NSNumber *num = (__bridge NSNumber *)cfnum;

答案 1 :(得分:0)

NSNumber和CFNumberRef是免费桥接的,这意味着要将一个转换为另一个,您所要做的就是将您拥有的任何一个转换为您想要的类型。在ARC代码中将CFNumberRef转换为NSNumber使用(__bridge NSNumber *)theCFNumberRef。