Swift代码在[String:String]到URLQueryItem转换时崩溃
我像这样初始化Swift代码在[String:String]到URLQueryItem转换时崩溃,swift,Swift,我像这样初始化[String:String] func doInBackground() { .... var getData = [String:String]() getData["domainOrGroupId"] = "5" getData["driverId"] = "2" getData["authKey"] = "998099" 然后我尝试将其转换为[URLQueryItem] var queryItems = [URLQueryItem]
[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显示一个对话框测试成功
。我猜这意味着我的应用程序崩溃了
预期的结果
点击“单步跳过”只需在for in
循环中的getData
上迭代
编辑
我在DispatchQueue.global异步中运行该方法。在doInBackground有机会运行之前,程序已经完成。这是调试器无法正常运行的根本原因
DispatchQueue.global(qos: .background).async {
self.doInBackground()
假设
getData
包含参数
字典,只需使用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) }
假设
getData
包含参数
字典,只需使用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) }
在
queryItems.append处崩溃(URLQueryItem(名称:key,值:value))
然后参数
!=<代码>获取数据。代码编译并运行良好。您得到的错误原因是什么?测试会话日志:/MyPath/Logs/Test/D7584BF5-F4C5-47F8-900F-0153AE9E40B2/session-MyAppTests-2017-02-25_181159-20kR4l.log您真的希望我可以读取您硬盘上的本地文件吗?;-)哦,不,我只是在分享信息,以便你能指导我下一步的工作。在queryItems.append(URLQueryItem(name:key,value:value))
然后参数
!=<代码>获取数据。代码编译并运行良好。您得到的错误原因是什么?测试会话日志:/MyPath/Logs/Test/D7584BF5-F4C5-47F8-900F-0153AE9E40B2/session-MyAppTests-2017-02-25_181159-20kR4l.log您真的希望我可以读取您硬盘上的本地文件吗?;-)哦,不,我只是在分享信息,以便您可以指导我下一步的工作。假设getData
==参数
,您的代码编译并运行良好。请提供一个复制您的问题的方法。修复了小错误。您的代码仍然可以正常编译和运行。它对我不起作用。请将其复制并粘贴到新项目中–它可以在Swift 3.0.2和3.1中正常编译和运行。您的问题可能在代码的其他地方。假设getData
==参数
,您的代码编译并运行良好。请提供一个复制您的问题的方法。修复了小错误。您的代码仍然可以正常编译和运行。它对我不起作用。请将其复制并粘贴到新项目中–它可以在Swift 3.0.2和3.1中正常编译和运行。您的问题可能存在于代码的其他地方。