ios - 使用 AFNetworking 时指示 'Anyobject' 不是 'NSProxy' 的子类型

标签 ios swift afnetworking-3

我正在使用 AFNetworking 从 openweathermap API 检索天气信息。

let manager = AFHTTPSessionManager()
    manager.requestSerializer = AFJSONRequestSerializer()
    let url = "http://api.openweathermap.org/data/2.5/weather"
    let params = ["lat": latitude,"lon": longitude,"cnt": 0]

    manager.get(url, parameters: params,
                success: {(operation: URLSessionDataTask,responseObject: AnyObject!) in print("JSON" + responseObject.description!) },
                failure: {(operation: URLSessionDataTask?,error: Error) in print(error.localizedDescription)}
    )

responseObject.description 处突出显示“Anyobject”不是“NSProxy”的子类型 如果删除 .description 错误将消失。 平台:xcode 8.3.2 swift:3

'Anyobject' is not a subtype of 'NSProxy'

最佳答案

首先,您正在使用的所有 get 方法都已弃用(我假设您拥有最新的 AFNetworking 版本)。请这样使用新的:

let manager = AFHTTPSessionManager()
manager.requestSerializer = AFJSONRequestSerializer()
let url = "http://api.openweathermap.org/data/2.5/weather"
let params = ["lat": 5.0,"lon": 5.0,"cnt": 0]
manager.get(url, parameters: params, progress: nil, success: { (operation, responseObject) in
    if let responseObject = responseObject {
        print(responseObject)
    } else {
        print("There is no response object") //assume parsing error for JSON
    }
}) { (operation, error) in
    print(error.localizedDescription)
}

作为最后一个提示:如果您使用的是 Swift,最好使用 Alamofire: https://github.com/Alamofire/Alamofire

它支持来自 Swift 的许多不错的功能和更好的错误处理。例如 Alamofire 将解析错误视为真正的错误并调用失败 block ,而不是像 ANetworking 那样的成功 block 。 还允许您轻松集成一些 JSON 解析库,如 SwiftJSON https://github.com/SwiftyJSON/SwiftyJSON

关于ios - 使用 AFNetworking 时指示 'Anyobject' 不是 'NSProxy' 的子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43581308/

相关文章:

ios - 无法在我的应用程序中打开相机胶卷

ios - AFNetworking 3.0 未获取结果

ios - 如何在 AfNetworking 3.0 中为请求添加 Headers?

ios - 我如何将数据保存在 block 代码之外?

iphone - 尝试将 NSUInteger 与枚举一起使用 (<<)

ios - 在 iOS 中检测 CBPeripheral 对象状态从 "Connected"到 "Disconnected"的变化

iphone - 序列化一个包含对象的 NSMutableArray

ios - uiViewController 中的 uiTableView : something's missing

ios - 使用 RxSwift 创建一个可观察对象

ios - 无法将类型 '((T) -> Void)?' 的值分配给类型 '((T) -> Void)?'