6 xcode cocoapods swift alamofire alamofire-request
更新到 Alamofire 4.5 破坏了语法。我应该如何重新格式化我的代码以使其正常工作?
我拥有的:
func getAllBeacons(completionHandler: @escaping ([BeaconModel]) -> ()) {
let URL = "https://testwebapi.knowe.net/Knowe.Beacon.WebApi/beacon/GetAllByLanguage"
let preferredLanguage = NSLocale.preferredLanguages[0]
print(UIDevice.current.modelName)
AF.request(URL, method: .post, parameters: ["SearchValue": preferredLanguage, "IosModelName": UIDevice.current.modelName]).responseArray { (response: DataResponse<[BeaconModel]>) in
let beaconArray = response.result.value
completionHandler(beaconArray!)
}
}
Run Code Online (Sandbox Code Playgroud)
我有什么:
func getAllBeacons(completionHandler: @escaping ([BeaconModel]) -> ()) {
let URL = "https://testwebapi.knowe.net/Knowe.Beacon.WebApi/beacon/GetAllByLanguage"
let preferredLanguage = NSLocale.preferredLanguages[0]
print(UIDevice.current.modelName)
Alamofire.request(URL, method: .post, parameters: ["SearchValue": preferredLanguage, "IosModelName": UIDevice.current.modelName]).responseArray { (response: DataResponse<[BeaconModel]>) in
let beaconArray = response.result.value
completionHandler(beaconArray!)
}
}
Run Code Online (Sandbox Code Playgroud)
奇怪的是,当我在模拟器上运行该代码时,该代码有效,但在我的物理 iPhone 上却无效。后者给了我一个错误:模块“Alamofire”没有名为“请求”的成员
这个项目是分配给我的,不知道用的是什么版本的Alamofire和Alamofireobjectmapper。最好的情况是降级到以前的版本,但我不知道哪些版本将与以前的语法兼容。
我正在使用 Xcode 11.3.1 和 Swift
pod 'Alamofire', '~> 4.5'
pod 'AlamofireObjectMapper', '~> 5.0'
pod 'NVActivityIndicatorView'
pod 'SQLite.swift', '~> 0.11.4'
Run Code Online (Sandbox Code Playgroud)
Alamofire 5 将各种类型更改*Response为双重通用。也就是说,对于 和Success类型都是通用的Failure。在您的情况下,您DataResponse需要提供Error在失败情况下生成的类型。Alamofire 5AFError默认返回类型,但由于responseArray是自定义的,因此使用中可能存在不同的错误类型。
顺便说一句,pod您提供的定义不应该能够升级到 Alamofire 5,所以我不确定您是如何遇到这个问题的。
| 归档时间: |
|
| 查看次数: |
2936 次 |
| 最近记录: |