一尘不染

使用AnyObject时将Bool视为int

swift

我正在Dictionary<String,AnyObject>Swift
iOS应用程序中使用类型的参数列表来保存一些最终将传递给Web服务的参数。如果我将Bool保存到此字典中然后打印,它会显示为“
Optional(1)”,因此正在将其转换为int。我无法发送一个int,并且需要将其设为“ true”。下面的示例代码。

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>


阅读 232

收藏
2020-07-07

共1个答案

一尘不染

代替:

var params = Dictionary<String,AnyObject>()

尝试:

var params = Dictionary<String,Any>()

Any可以代表任何类型的实例,包括函数类型。

文档: https
:
//developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TypeCasting.html#//apple_ref/doc/uid/TP40014097-CH22-XID_448

在这种情况下,您似乎需要一个Dictionary,并且服务期望的是“ true”,而不是bool值。

我建议创建一个将bool值转换为String的函数,并使用该函数来设置params [“ tester”]。

例:

param["tester"] = strFromBool(true)

然后定义函数strFromBool以接受bool参数并根据其值返回“ true”或“ false”。

2020-07-07