2017-04-24 49 views
1

我正在使用AFNetworking從openweathermap API中檢索天氣信息。當使用AFNetworking時,指示'Anyobject'不是'NSProxy'的子類型

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迅速:3

'Anyobject' is not a subtype of 'NSProxy'

回答

0

首先對所有的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) 
} 

當最後提示:如果您使用的是斯威夫特,更好地運用Alamofire: https://github.com/Alamofire/Alamofire

它支持大量的來自斯威夫特到來不錯的功能和更漂亮的錯誤處理。例如,Alamofire將解析錯誤視爲真正的錯誤並調用失敗塊,而不是像ANetworking那樣的成功塊。 還允許您輕鬆集成一些JSON解析庫,如SwiftJSON https://github.com/SwiftyJSON/SwiftyJSON

相關問題