2014-09-24 2 views
1

나는 다음과 같은 코드가 있습니다NSURLSession dataTaskWithRequest 스위프트

var resultData:NSData? 

task = session!.dataTaskWithRequest(request) { (data: NSData!, response: NSURLResponse!, error: NSError!) in 

    if ((error) != nil) { 
     println("Error") 
     return 
    } 
    resultData = data 
} 

task!.resume() 

그러나, 실행 후 resultData가 nil입니다. 요청에 의해 반환 된 데이터를 얻으려면 어떻게해야합니까?

+0

그 비동기 함수이므로 함수 내부에서 결과 데이터를 처리해야합니다. 아래의 코드를 따르십시오. – dhanasekar

답변

1

확인 nil을 반환하고 당신은 그것을 여기

는 스위프트 3 예이다 사용할 수 있습니다

let url = NSURL(string: "https://itunes.apple.com/search?term=jack+johnson&limit=2")! 
let request = NSMutableURLRequest(url: url as URL) 
let session = URLSession.shared 

let task = session.dataTask(with: request as URLRequest) { data, response, error in 
    if error != nil { 
     print("error: \(error!.localizedDescription): \(String(describing: error))") 
    } 
    else if data != nil { 
     if let str = NSString(data: data!, encoding: String.Encoding.utf8.rawValue) { 
      print("Received data:\n\(str)") 
     } 
     else { 
      print("unable to convert data to text") 
     } 
    } 

} 
task.resume() 
-1

dataTask는 데이터 태스크 기능 내에서 사용해야하는 결과 데이터를 사용하려면 비동기입니다. 이제 print 문이 응답을 인쇄합니다. 당신이 dataTask 외부 resultData를 사용하는 경우 FUNC 데이터가 전무 인 경우는

var resultData:NSData? 

let dataTask = session.dataTask(with: request as URLRequest) { 
      (data, response, error) in 

      guard let data = data, error == nil else { return } 

      if error != nil { 
       error 
} 
resultData = data 
print(NSString(data: data, encoding: String.Encoding.utf8.rawValue)!) 
}dataTask.resume() 
관련 문제