4
그래서 여기에는 작동하지 않는 코드 블록이 있습니다. 이는 선택적 값의 랩핑을 시도하는 동안 nil을 발견했기 때.입니다. 그것은 비동기 메서드 내에서 초기화되기 때문에입니다. 내 질문은, 어떻게 결과를 가져올 때까지 함수를 반환 보류합니까? 당신이 블록의 결과를 기다려야합니다Swift : 내부에서 결과 반환하기 dispatch_async
struct Domain {
var name: String?
var tld: String?
var combined: String {
get {
return self.name!+self.tld!
}
}
var whoIs: String {
get {
if self.whoIs.isEmpty {
var result: String?
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {
let whois_url = NSURL(string: SEARCH_URL+self.combined+"/whois")
result = NSString(contentsOfURL: whois_url!, encoding: NSUTF8StringEncoding, error: nil)
print(result!)
})
return result!
}
return self.whoIs
}
}
}
와우, 정말 쉬웠습니까? 감사! – garetmckinley
당신은 dispatch_sync를 당신이 closure -> deadlock을 보내고있는 곳과 같은 쓰레드로하지 말아야한다. – smat88dd