解析使得這極其簡單。首先讓我們回過頭來仔細討論一些主要關鍵點:
當用戶登錄時,我需要加載他們的信息&數據。在解析中,我使用signUpInBackgroundWithBlock
方法來設置一個帳戶。我不確定我在登錄時如何檢索這些信息。
這是一個好的開始。你在正確的軌道上。一旦他們成功註冊,您就不需要做其他事情了。因爲你正在使用這種方法,你有對象,對象(包含他們所有的信息:用戶名,電子郵件,密碼等)。因爲您正在使用block
,所以您有callback
,這是您如何檢索其信息。這一切都在同一個方法中完成,不需要創建另一個實例來提供已經給出的內容。它會看起來像這樣:
user.signUpInBackgroundWithBlock {
(succeeded: Bool, error: NSError?) -> Void in
if error == nil {
// do something if there is an error signing up
} else {
// You have a successful log in. Which means you now have a cached user on device
}
}
那麼,一旦他們註冊後,你如何獲得任何用戶字段?通過調用緩存的用戶或currentUser
。任何緩存意味着它存儲在用戶設備上,即使通過應用終止,它仍然存在。在這種情況下,只要會話成功啓動,就會對其進行緩存。它不會持續通過應用程序刪除和重新安裝,但它會緩存在您的設備上,因此您可以在任何情況下調用它。所以在你的signUpInBackgroundBlock
回調或真的任何地方註冊後在不同的視圖控制器中,爲了看到登錄的用戶信息,你只需要調用currentUser
,這樣你就可以檢索到它的所有參數。事情是這樣的:
if error = nil {
} else {
var currentUser = PFUser.currentUser() //This gets the current user where you can get information like
var userObjectId = currentUser.objectId //returns the current users objectId
var userUsername = currentUser.username //returns username
}
如果你想從你的User
類獲得自定義字段,那麼你將必須執行一個查詢,你還不如不甚至與緩存版本打擾,因爲你已經累死API請求來檢索自定義字段值。假設您在User
類中創建了一個列類型字符串,用於存儲用戶電話號碼。然後,您將不得不創建一個查詢來檢索該信息。否則,您始終可以使用簡化的緩存信息將其顯示在任何視圖控制器中。
簡單的用戶查詢將是這個樣子:
var query = PFUser.query() //NOTICE there is no classname, this is the proper way to query the User class, no matter what you see elsewhere.
query.whereKey("username", equalTo:PFUser.currentUser().username)
query.getFirstObjectInBackgroundWithBlock {
(user : PFUser?, error: NSError?) -> Void in
if user == nil {
println("No user with that username")
} else {
//retrive your special column data
let userPhoneNumber = user["PhoneNumberColumnName"] as String
}
}
所以如果我理解......你在想一旦**用戶登錄**到應用程序中,如果所有的信息和字段後/正確你應該直接去應用程序 – Lamar
是的,這是正確的。 –
這就是我想用來加載他們的信息,但它不工作。 –