Swift代码在[String:String]上崩溃到URLQueryItem转换

时间:2017-02-25 12:06:07

标签: swift

我这样初始化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

1 个答案:

答案 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) }