代码之家  ›  专栏  ›  技术社区  ›  Daddy

在目标C中存储长的长值

  •  2
  • Daddy  · 技术社区  · 15 年前

    我正在使用一个返回JSON字典的API。其中一个键是“variant hash”,对应的数据是这样的整数:7331108254952843877或62098940886550535576。我假设这是一个很长的值。我正在用nscoder序列化这些数据,我不确定要使用哪个encodeValue:方法。没有EncodeLongValue:Forkey:。

    另外,执行nslog(@“%@”,returnedDictionary);显示整个字典结构,但使用object for key:不起作用,因为键变量哈希的对应值不是对象。

    如何从字典中获取数据,以及如何用nscoder存储这些数据?

    谢谢你的帮助。

    3 回复  |  直到 15 年前
        1
  •  2
  •   Kris Markel    15 年前

    根据您使用的JSON解析器,该数字将以nsnumber、nsdecimalnumber、nsstring或nsvalue的形式存储在字典中。nsnumber(或nsdecimalnumber,这是一个子类)可能是最有可能的,但我会检查您的解析器文档或代码。

    假设是这样的话,你会得到这样的值。

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

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

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

        2
  •  4
  •   JeremyP    15 年前

    没有EncodeLongValue:Forkey:

    不,但是有一个 encodeInt64:forKey: 这应该是技巧所在。

        3
  •  0
  •   Yuji    15 年前

    如果速度不是你的关键问题,就把它当作一根绳子来处理,然后使用 NSString* .