this post과 비슷한 문제가 발생하지만 답변을 완전히 이해하지 못했습니다. 완료 처리기를 만들었지 만 예상대로 작동하지 않는 것 같습니다.신속한 URL 세션 및 URL 요청이 작동하지 않습니다.
func updateTeam(teamID: Int) {
startConnection {NSArray, Int in
//Do things with NSArray
}
}
func startConnection(completion: (NSArray, Int) -> Void) {
let url = URL(string: "http://www.example.com/path")
var request : URLRequest = URLRequest(url: url!)
request.httpMethod = "POST"
let postString = "a=\(Int(teamInput.text!)!)"
request.httpBody = postString.data(using: .utf8)
let dataTask = URLSession.shared.dataTask(with: request) {
data,response,error in
print("anything")
do {
if let jsonResult = try JSONSerialization.jsonObject(with: data!, options: []) as? NSDictionary {
self.teamResult = jsonResult
print(jsonResult)
}
} catch let error as NSError {
print(error.localizedDescription)
}
}
dataTask.resume()
completion(NSArray(object: teamResult), Int(teamInput.text!)!)
}
데이터 결과를 사용하려고 시도하기 전에 dataTask 문 중 아무 것도 실행되지 않거나 적어도 완료되지 않습니다. 이 완료 처리기의 문제점은 무엇입니까?
미리 감사드립니다.
내가 그 '완료 (NSArray를 (객체를 생각한다 : teamResult), Int (teamInput.text!)!)'는'print (jsonResult)'가있는 곳으로 가야합니다. 지금은 데이터 작업을 시작한 다음 완료 핸들러를 (아마도)'nil'을 사용하여 즉시 호출합니다. 데이터 타스크 핸들러 내에서 (인쇄 메소드 중 하나에서) 중단 점이 있으면 중단 점에 충돌합니까? – keithbhunter
Alamofire를 살펴보고이 프로젝트에서 가능한 경우 사용하는 것이 좋습니다. 이렇게 코드를 작성하는 것이 훨씬 쉽습니다. –
예, 처리기를 데이터 작업으로 이동하면 아름답게 작동하는 것 같습니다. 정말 고맙습니다! –