ios - 使用 swift 5 请求 AlamoFire url
问题描述
我刚刚发现这个方法写回去我改成AlamoFire.request
&AF.request
到.responseSwiftyJSON { (dataResponse) in
我.responseJSON(completionHandler: { (dataResponse) in
确实复制了它但我正在尝试使用它,我不熟悉 alamoFire 这是我第一次使用它,任何人都可以更新这个方法来请求来自 AlamoFire 的 URL 我正面临这些错误
1- isSuccess' 由于“内部”保护级别而无法访问
2-“结果”类型的值没有成员“值”
3- isFailure 因“内部”保护级别而无法访问
4-“结果”类型的值没有成员“错误”
@objc func searchPlaces(query: String) {
let urlStr = "\(MapBox.mapbox_api)\(query).json?access_token=\(MapBox.mapbox_access_token)"
AF.request(urlStr, method: .get, parameters: nil, encoding: URLEncoding.default, headers: nil).responseJSON(completionHandler: { (dataResponse) in
if dataResponse.result.isSuccess {
let resJson = JSON(dataResponse.result.value!)
if let myjson = resJson["features"].array {
for itemobj in myjson ?? [] {
try? print(itemobj.rawData())
do {
let place = try self.decoder.decode(Feature.self, from: itemobj.rawData())
self.searchedPlaces.add(place)
self.tableView.reloadData()
} catch let error {
if let error = error as? DecodingError {
print(error.errorDescription)
}
}
}
}
}
if dataResponse.result.isFailure {
let error : Error = dataResponse.result.error!
}
})
}
解决方案
对于isSuccess
(1)、isFailure
(3),您实际上可以打开response.result
. 对于value
响应结果中的 (2),您可以在response.value
最后找到它,但并非最不重要的是,error
(4) 在 switch 中可用,请查看下面的示例代码,该示例代码突出显示所有相关信息以使您的代码正常工作:
AF.request(urlStr, method: .get, parameters: nil, encoding: URLEncoding.default, headers: nil)
.responseJSON(completionHandler: { response in
switch response.result {
case .success:
let resJSON = JSON(response.value)
...
case .failure(let error):
print(error)
}
})
推荐阅读
- c# - 即使在添加清单并提供权限后,MediaCapture 初始化也会失败
- excel - 需要比较两列并将输出提供给第三列
- c# - 如何在 Google Or-Tools 中限制路线持续时间?
- c# - 我能够从 ALM 获取文件夹,但不能从测试中获取 - c#
- gradle - 如何在具有不同名称和路径的自定义任务中创建多个 jar
- ios - UIButton 在 iOS 13 中作为 UITableViewCell 的辅助视图的位置错误
- html - 如何删除 MDBootstrap 类默认选择颜色
- android - 在具有 Mediatek MT6735P 芯片组和 Cortex-A53 CPU 的 64 位 armv8 设备上崩溃
- php - 如何获取嵌套在其他模型后面的存储数据
- reactjs - 子组件在 ReactJS 中使用父母的 Prop