0
這是一個與如何在Swift中使用異步函數中的回調有關的問題。我無法理解回調如何完全工作。如何在Swift中實現此異步解析登錄作爲CallBack函數
當按下按鈕時,我想調用logIn()
,然後保持UI活動(即在logInWithUsernameInBackground
正在等待響應時不阻塞主線程)。
我的問題是我怎麼能把這個功能放在另一個類(即不是在我的viewcontroller),然後得到一個Bool
無論登錄成功與否?
**我只是想知道如何分割這個函數,當調用部分在我的ViewController中,但我可以有另一個onLoginComplete
,我可以放在其他類中。
func logIn() {
PFUser.logInWithUsernameInBackground(tv_username.text, password:tv_password.text) {
(user, error) -> Void in
if error == nil {
if user != nil {
// Yes, User Exists
self.goToMainMenu()
} else {
// No, User Doesn't Exist
println("logIn() - User Doesn't Exist")
}
} else {
//if error show popup
self.showUIAlertPopup("Oops, something went wrong", msg: "Either user exists or you are not connected", btn_text: "Try again")
}
}
}
我實際上試圖做的是將異步網絡調用放在一個完全不同的類。所以我的問題是 - 如果網絡操作是在不同於ViewController的類中完成的,一旦網絡操作完成後,如何更新ViewController?
我實際上試圖做的是將異步網絡調用放在一個完全不同的類。所以我的問題是 - 如果網絡操作是在不同於ViewController的類中完成的,一旦網絡操作完成後,如何更新ViewController?對不起,如果不清楚,我會將此添加到問題中。 – user1406716
這就是我所做的,這是一個類功能,所以你可以把它放在任何地方。 –
如果您不想完成處理程序,則可以使用在用戶登錄時可以調用的委託方法。或發佈NSNotification,但委託更加乾淨。但與根據完成處理程序布爾結果更新viewController並沒有多大區別。 –