ste*_*ris 8 dictionary boolean swift
我Dictionary<String,AnyObject>
在Swift iOS应用程序中使用类型的params列表来保存一些最终将传递给webservice的参数.如果我要将Bool保存到此字典然后打印它,它将显示为"Optional(1)",因此它将被转换为int.我不能发送一个int,需要这个"真实".示例代码如下.
var params = Dictionary<String,AnyObject>()
params["tester"] = true
println(params["tester"])
Run Code Online (Sandbox Code Playgroud)
如何将其保存为实际的真/假值而不是整数?
注意事项
这与AFNetworking一起使用,因此参数必须是形式 AnyObject!
AFNetworking结构如下:
manager.GET(<#URLString: String!#>, parameters: <#AnyObject!#>, success: <#((AFHTTPRequestOperation!, AnyObject!) -> Void)!##(AFHTTPRequestOperation!, AnyObject!) -> Void#>, failure: <#((AFHTTPRequestOperation!, NSError!) -> Void)!##(AFHTTPRequestOperation!, NSError!) -> Void#>)
Run Code Online (Sandbox Code Playgroud)
'parameters'参数是我在Dictionary<String,AnyObject>
as中传递的.
代替:
var params = Dictionary<String,AnyObject>()
Run Code Online (Sandbox Code Playgroud)
尝试:
var params = Dictionary<String,Any>()
Run Code Online (Sandbox Code Playgroud)
Any可以表示任何类型的实例,包括函数类型.
文档: https ://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TypeCasting.html#//apple_ref/doc/uid/TP40014097-CH22-XID_448
在这种情况下,你似乎需要一个字典,服务期望"真"而不是bool值.
我建议创建一个函数将bool值转换为String并使用它来设置params ["tester"].
例:
param["tester"] = strFromBool(true)
Run Code Online (Sandbox Code Playgroud)
然后定义函数strFromBool以接受bool参数并根据其值返回"true"或"false".
true
真的是1,所以这不是不准确的; 它确实存储了Bool,但由于它出现在另一端AnyObject
,因此它只是将其打印为整数,因为它不知道确切的类型.
您可以尝试将其转换为测试Bool:
var params = Dictionary<String,AnyObject>()
params["tester"] = true
if let boolValue = params["tester"] as? Bool {
println("\(boolValue)")
}
Run Code Online (Sandbox Code Playgroud)
这是安全的方法.
归档时间: |
|
查看次数: |
9684 次 |
最近记录: |