gpt4 book ai didi

iphone - NSDictionary initWithContentsOfFile : messes up NSDecimalNumbers, 为什么?

转载 作者:行者123 更新时间:2023-12-03 16:24:00 24 4
gpt4 key购买 nike

在我的 iPhone 应用程序中,我使用 NSDecimalNumber 来存储一些货币汇率值。我在应用程序第一次启动时从网络上提取数据,然后在它们过时时再次提取数据,并将它们存储在 NSDictionary 中;然后我使用 writeToFile:atomically: 。

当应用程序第一次启动时,我的汇率转换方法工作正常。然而,当我第二次启动应用程序,并且使用 -(NSDictionary*) initWithContentsOfFile: 加载费率时,转换方法停止工作,我得到了奇怪的结果。

我在 incriminated 方法中使用断点进行了一些调试,发现速率数据被视为 NSCFNumber,而不是 NSDecimalNumber。因此, initWithContentsOfFile 似乎没有为我的对象分配正确的类。根据记录,这些对象的实际值(如 description 方法中所示)对应于预期的费率值。

我还检查了 writeToFile:atomically: 生成的 plist 文件,发现费率存储为 real;我想知道这是否是正确的类型。

知道发生了什么吗?

提前致谢,
达维德

最佳答案

属性列表不区分十进制数和 float 。 real 元素保存一个 float 。 (事实上​​,序列化本身可能只是 NSNumber 向其自身发送 floatValue,而不知道该实例实际上是子类。这意味着在以下情况下会发生向浮点的转换:您生成 plist 数据,而不是在读回它时生成。)

我认为,您必须将其存储为字符串。希望这是无损的。

关于iphone - NSDictionary initWithContentsOfFile : messes up NSDecimalNumbers, 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/434145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com