2015-02-02 2 views
0

HTTP 요청을하는 코드를 가지고 데이터, 응답 및 오류 결과가있는 함수를 호출합니다. 이 함수는 Swift String을 유일한 인수로 취하는 함수 handler을 호출하려고합니다. HTTP 요청에서 반환 된 NSData 개체 (data)를 String으로 변환하려고 시도했지만 XCode에서 ('문자열) -> $ T2'이 ' 문자열 ' 내가 String (res)에 내 기능 (handler)을 호출하려고합니다.Swift에서 HTTP 요청에서 반환 된 NSData를 문자열로 변환합니다.

let res: String = NSString(data: data, encoding: NSUTF8StringEncoding)! 
    handler(res) 

이 오류를 해결하는 방법에 대한 아이디어가 있으십니까?

+0

핸들러 함수의 정의가 무엇을 :
자세한 내용은이 읽기 handler: (String) ->()

func do_request(url: String, data: String?, handler: (String) ->()) { // Your code if let res: String = NSString(data: data, encoding: NSUTF8StringEncoding) { handler(res) } } 

handler: (String)을 변경해보십시오? – rakeshbs

+0

이 코드를 가진 함수는'func do_request (url : String, data : string?, handler : (String)) {', 그래서 핸들러 함수는 무엇이든 될 수 있습니다. – baryon5

답변

0

NSString은 Swift String으로 타입 캐스팅 할 수 있으며 자동으로 완료됩니다. 그래서 다음은 귀하의 경우 충분해야한다 : (. 나는 그것을 강제로 푸는 선택적 항목을 나쁜 생각이 일반적이다로 if let 부분을 추가)

if let res = NSString(data: data, encoding: NSUTF8StringEncoding) { 
    handler(res) 
} else { 
    // handle that the data wasn’t convertible to a string. 
} 


이유 당신이 얻고 그러나 그러나 res 상수를 String 유형으로 정의하기 때문에 오류가 발생합니다. 그런 다음 형식 시스템이 적합하지 않은 NSString 개체로 초기화하려고합니다.

+0

'handler (res)'라고하는 줄에서 오류가 발생합니다. 첫 번째 줄은 'as String'으로 문자열에 캐스트했는지 여부에 관계없이 오류를주지 않지만 두 번째 줄에는 관계없이 오류가 있습니다. 다른 말로하면, 나는 그것을 시도하면 여전히 거의 동일한 오류를 준다. – baryon5

관련 문제