我正在使用 Dictionary<String,AnyObject>
类型的参数列表在 Swift iOS 应用程序中保存一些最终将传递给 Web 服务的参数。如果我要将一个 Bool 保存到这个字典然后打印它,它显示为“Optional(1)”,因此它被转换为一个 int。我不能发送一个 int 并且需要它是“真实的”。下面的示例代码。
var params = Dictionary<String,AnyObject>()
params["tester"] = true
println(params["tester"])
我怎样才能将其保存为实际的 true/false 值而不是整数?
注意事项
这是与 AFNetworking 一起使用的,因此参数的格式必须是 AnyObject!
AFNetworking结构如下:
manager.GET(<#URLString: String!#>, parameters: <#AnyObject!#>, success: <#((AFHTTPRequestOperation!, AnyObject!) -> Void)!##(AFHTTPRequestOperation!, AnyObject!) -> Void#>, failure: <#((AFHTTPRequestOperation!, NSError!) -> Void)!##(AFHTTPRequestOperation!, NSError!) -> Void#>)
“参数”参数是我在 Dictionary<String,AnyObject>
中传递的内容作为。
最佳答案
代替:
var params = Dictionary<String,AnyObject>()
尝试:
var params = Dictionary<String,Any>()
Any can represent an instance of any type at all, including function types.
在这种情况下,您似乎需要一个字典,并且服务期望“true”而不是 bool 值。
我建议创建一个函数来将您的 bool 值转换为 String 并使用它来设置您的参数 ["tester"]。
示例:
param["tester"] = strFromBool(true)
然后定义函数 strFromBool 以接受 bool 参数并根据其值返回“true”或“false”。
关于swift - 使用 AnyObject 时 Bool 被视为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29151499/