ปิดด้านในอีกปิด
Sep 11 2020
ในการใช้งานต่อไปนี้ฉันได้ปิดภายในการปิดอีกครั้งและต้องการส่งคืนการตอบกลับการปิดครั้งที่สอง func customerAccount() -> Result {} ฉันติดอยู่
public func customerAccount(){
self.loadCurrentAccount { (account) in
self.fetchData { (result) in
// wonder how to return result from the parent method
print(result)
}
}
func fetchData(completion: @escaping(Result?) -> Void) {
guard let context = self.context else { return }
let parameters = Parameters(scopes: scopes)
context.fetchData(with: parameters) { (response, error) in
if let error = error {
completion(nil)
}
guard let response = response else {
return
}
completion(response)
}
}
คำตอบ
1 MichaelMontalbano Sep 11 2020 at 09:35
ในสถานการณ์เหล่านี้ควรใช้บล็อกการทำให้เสร็จสมบูรณ์ การบล็อกเสร็จสิ้นจะส่งคืนค่า async ...
@IBAction func dataButtonClicked(_ sender: Any) {
fetchData { (res) in
self.result = res
}
}
func fetchData(completion: @escaping (Result?) -> Void) {
guard let context = self.context else {
completion(nil)
return
}
let parameters = Parameters(scopes: scopes)
context.fetchData(with: parameters) { (response, error) in
if let error = error {
completion(nil)
return
}
guard let response = response else {
completion(nil)
return
}
completion(response)
}
}