浮点值返回swift中[String:AnyObject]的双引号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浮点值返回swift中[String:AnyObject]的双引号相关的知识,希望对你有一定的参考价值。

我不知道为什么当我使用[String: AnyObject]时浮点值总是带有双引号。你们有一些方法可以让我得到正确的结果吗?

let appliedLoyalty: Float = 1.05
let appliedWallet: Float = 0.55

let payLoad: [String: AnyObject] = ["custid": custid! as AnyObject, "discounts": ["loyalty": appliedLoyalty,"wallet": appliedWallet] as AnyObject] // custid is string value

print(payLoad)

当我打印payLoad时,浮点值以双引号显示。

["discounts": {
    "loyalty" = "1.05";
    "wallet" = "0.45";
}, "custid": "puma"]
答案

用以下Any替换AnyObject:

let appliedLoyalty: Float = 1.05
let appliedWallet: Float = 0.55
let custID = "puma"
let payLoad: [String: Any] = ["custid": custID, "discounts": ["loyalty": appliedLoyalty,"wallet": appliedWallet]] // custid is string value

print(payLoad)

enter image description here

另一答案

当你使用print(payLoad)时,会调用字典的description方法。并且description方法的实现与在控制台上打印的相同。您应该使用JSONSerialization来查看实际的json,而不是打印字典。使用下面的代码或使用断点来检查payLoad中存储的内容

let jsonData = try? JSONSerialization.data(withJSONObject: payLoad, options: .prettyPrinted)
let jsonStr = String(data: jsonData!, encoding: .utf8)
print(jsonStr!)

以上是关于浮点值返回swift中[String:AnyObject]的双引号的主要内容,如果未能解决你的问题,请参考以下文章

如何从浮点值Swift 3中删除前导零

在 Swift 中使用 PropertyListDecoder 时从 plist 解析浮点值时出现解码错误

如何在视图中显示来自 Swift 完成处理程序的返回值?

Swift 中闭包方法的返回值

带有浮点原始值的 Swift 枚举的“枚举大小写的原始值不是唯一的”

void函数Swift3中的意外非void返回值