2017-04-24 10 views
1

AFNetworking을 사용하여 날씨 정보 양식 openweathermap API를 검색하고 있습니다. responseObject.description에서 강조AFNetworking을 사용할 때 'Any 객체'가 '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)} 
    ) 

는 오류가 사라집니다 .description을 제거하면 'Anyobject가'NSProxy ' 의 서브 타입이 아니라고 지적했다. 플랫폼 : 엑스 코드 8.3.2 SWIFT : 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과 같은 성공 차단이 아닌 실패 차단을 호출합니다. 또한 SwiftJSON 같은 일부 JSON 구문 분석 라이브러리를 쉽게 통합 할 수 있습니다. https://github.com/SwiftyJSON/SwiftyJSON