我有一個異步函數(geocodeAddressString),它在準備segue函數時被調用。問題是這個異步函數在執行segue後返回。下面的異步函數將地址字符串轉換爲座標。在此準備功能之前我不能調用這個異步函數,因爲用戶地址字段可以隨時由用戶編輯。當按下保存按鈕時,我嘗試調用異步函數,然後在異步函數返回時對segue進行編碼,但按下的按鈕和出現的繼續之間的加載時間太長。在不同視圖中快速捕捉異步函數
所以我的問題是,如果有什麼方法可以在新視圖中捕獲這種異步方法?然後我可以用實際返回的值替換一些臨時座標。任何幫助表示讚賞,謝謝!
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
//convert address to coordinates
let geoCoder = CLGeocoder()
geoCoder.geocodeAddressString(addressTxt.text!) { (placemarks, error) in
guard
let placemarks = placemarks,
let location = placemarks.first?.location
else {
// handle no location found
return
}
let tempCoord = CLLocationCoordinate2D(latitude: (location.coordinate.latitude), longitude: (location.coordinate.longitude))
self.donatedItem = DonatedItem(self.titleTxt.text!, self.itemImg.image!, self.donated, self.descTxt.text!, expirationDate, tempCoord, (user?.uid)!, (self.donatedItem?.itemID)!, self.addressTxt.text!, reserved: false, reservedBy: "NA")
self.donatedItem?.updateItem()
}
switch(segue.identifier ?? "") {
case "saveItem":
homeViewController.isReturningSegue = true
homeViewController.tempItem = self.donatedItem
default:
print("Undefined segue")
}
}
感謝您的提示。我希望儘可能避免使用進度指示器,但在任何情況下,我都會記住這個框架,以防止加載不可避免。 –