簡體   English   中英

UserDefaults第一次不加載

[英]UserDefaults not loading first time

我有兩步登錄過程。 在第一個屏幕上,我將FB用戶的詳細信息保存到UserDefaults。

當我加載第二個ViewController時,應該加載用戶的個人資料圖片和用戶名(我使用“ fullname ”創建)。 它實際上在我第二次加載用戶時有效,但從不第一次加載,是否存在某種延遲? 我已經嘗試過UserDefaults.standard.synchronize()但是沒有任何作用。 它甚至可以打印細節,所以我知道它可以工作...

    let userName = fullName.replacingOccurrences(of: " ", with: "_")
    UserDefaults.standard.setValue(userName, forKey: "username")

    if let picture = result["picture"] as? NSDictionary , let data = picture["data"] as? NSDictionary, let url = data["url"] as? String {
        UserDefaults.standard.setValue(url, forKey: "userFBPicURL")

        let username = UserDefaults.standard.value(forKey: "username") as? String
        let profileImage = UserDefaults.standard.value(forKey: "userFBPicURL") as? String

        UserDefaults.standard.synchronize()

        print ("Details are User:",username, "profileImage:",profileImage)

並在self.performSegue(withIdentifier: "UsernameSegue", sender: self)之后的新VC中:

override func viewDidLoad() {
    super.viewDidLoad()
    if let username = UserDefaults.standard.value(forKey: "username") as? String {usernameTextfield.text = username}
    if FBSDKAccessToken.current() != nil {loadFacebookProfileImage()}
}

我認為你正在執行賽格瑞之后或者viewDidLoad中被調用的值設置為UserDefaults。

嘗試查找問題的步驟:

  1. 您能否嘗試設置斷點,然后看看先發生什么,然后發生什么?
  2. 在分配defaults后,立即嘗試從defaults打印。
  3. 只需嘗試不在ViewDidLoad中獲取數據,但稍后再獲取。 例如,在按鈕上點擊。 只是為了看看它也是第一次出現(但不僅是第二次出現)

問題:您在哪里將值設置為默認值?

PS:同樣,我不會為此使用UserDefaults,但是是的,這是一個不同的問題。

抱歉,由於您需要更多調試信息/代碼,因此無法提供確切的解決方案。 請嘗試上面的選項。 希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM