CFNumber 到 int 或 NSNumber?

问题描述 投票:0回答:2

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

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

如何将其巧妙地转换为 int 或 NSNumber ?

objective-c json nsdictionary nsnumber
2个回答
6
投票

您可以直接投射它,因为免费桥接

NSNumber *num = (NSNumber *)cfnum;

如果启用 ARC

NSNumber *num = (__bridge NSNumber *)cfnum;

0
投票

NSNumber 和 CFNumberRef 是免费桥接的,这意味着将其中之一转换为另一种,您只需将其中一个转换为您想要的类型即可。在 ARC 代码中,使用 (__bridge NSNumber*) theCFNumberRef 将 CFNumberRef 转换为 NSNumber。

© www.soinside.com 2019 - 2024. All rights reserved.