【问题标题】:CFNumber to int or NSNumber?CFNumber 到 int 还是 NSNumber?
【发布时间】:2013-03-24 00:24:06
【问题描述】:

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

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

我怎样才能将它巧妙地转换为 int 或 NSNumber ?

【问题讨论】:

    标签: objective-c json nsdictionary nsnumber


    【解决方案1】:

    因为toll-free bridging,你可以直接施放它

    NSNumber *num = (NSNumber *)cfnum;
    

    如果启用了 ARC

    NSNumber *num = (__bridge NSNumber *)cfnum;
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-30
        • 1970-01-01
        相关资源
        最近更新 更多