我这样初始化nester
[String:String]
然后我尝试将其转换为func doInBackground() {
....
var getData = [String:String]()
getData["domainOrGroupId"] = "5"
getData["driverId"] = "2"
getData["authKey"] = "998099"
[URLQueryItem]
在 var queryItems = [URLQueryItem]()
for key in getData.keys {
print(key+":"+getData[key as String]! as String)
queryItems.append(URLQueryItem(name : key, value : getData[key]))
}
我错过了什么?我想是一些非常基本的东西。
修改
queryItems.append
var queryItems =
点击getData [String : String] 3 key/value pairs
[0] (key: String, value: String)
[1] (key: String, value: String)
[2] (key: String, value: String)
,直到Step Over
通知我print
之前已移动print
。
打印确定
queryItems.append
会发生什么
再次点击 driverId:2
,调试器消失XCode显示对话框Step Over
。我想这意味着我的应用程序崩溃
预期结果
点击'跳过'只是遍历Test Succeeded
循环中的getData
。
修改
我在DispatchQueue.global async中运行该方法。程序在doInBackground有机会运行之前完成。这是我的调试器运行不正常的根本原因。
for in
答案 0 :(得分:1)
假设getData
包含parameters
字典,只需使用API枚举字典:
var parameters = [String:String]()
parameters["domainOrGroupId"] = "5"
parameters["driverId"] = "2"
parameters["authKey"] = "98098"
var queryItems = [URLQueryItem]()
for (key, value) in parameters {
queryItems.append(URLQueryItem(name : key, value : value))
print(key+":"+value)
}
甚至使用map
queryItems = parameters.map{ URLQueryItem(name : $0.0, value : $0.1) }