swift - 从快速关闭中获取数据
问题描述
我很难理解 Swift 闭包,尤其是如何从中获取数据。以下代码发出 http get 请求并从 URL 检索数据。这一切都很好。我可以在闭包中打印出这些数据,但无法确定如何存储到外部变量或返回数据。代码完成时,routes变量为零。有谁知道我做错了什么和/或如何从关闭中获取数据。
var routes: [String]?
let task = URLSession.shared.dataTask(with: url, completionHandler: { data, response, error in
guard let data = data, error == nil else {
print(error ?? "Unknown error")
return
} //end let
do {
if let jsonDict = try JSONSerialization.jsonObject(with: data, options: []) as? NSDictionary {
if let response = jsonDict.value(forKey: "response") as? NSArray {
for i in 0..<response.count {
let route = response.object(at: i) as! NSDictionary
print(route.value(forKey: "route_id")!)
routes?.append(route.value(forKey: "route_id")! as! String)
}
self.routes = routes
print(self.routes)
}
}
} catch let error as NSError {
print(error.localizedDescription)
}
})
task.resume()
输出:
11201-20180605110613_v67.1
11202-20180524131340_v66.89
11201-20180524131340_v66.89
11202-20180605110613_v67.1
nil
解决方案
推荐阅读
- python - 从 try-except 创建函数
- java - Java - BlockingQueue 冻结多线程应用程序
- flutter - Flutter:在 PageView.builder 中将页面小部件创建为列表大小的数量
- javascript - react-native 使用钩子从图库中加载图像列表,
- spring-boot - 是否有任何特殊配置可以将 SpringRunner 与 junit5 一起使用?
- c# - 基于请求类型的 ASP.NET Core DI
- python - 二进制轮廓级别
- android - 为什么我的水平 ViewPager2 中的垂直 RecyclerView 不滚动?
- php - 为什么
在 html 文档的正文中,我有这样的内容:
<?=str_replace(' ', '_', $result[0]['something'])?>
这工作得很好。在同一个文档中,我有这个:
<?php if(!empty($result[0]
- c# - 当我添加新用户并尝试在下一行添加声明时,我在正文中引用了错误