2017-04-20 13 views
0

我現在的問題是,如果數據庫中的用戶發生了某些變化(測試期間手動更改),則客戶端緩存的用戶不會被更新。我知道我需要使用fetch()或其中一個變體(如果需要,背景),但我真的不知道如何。檢查用戶是否有效解析(Swift)

這是我在AppDelegate中的當前代碼,用於確定是顯示登錄屏幕還是繼續執行主應用程序。

 // Decide which controller to go to 
     self.window = UIWindow.init(frame: UIScreen.main.bounds) 

     var sb: UIStoryboard? = nil 
     if (PFUser.current() != nil) && (PFUser.current()?.isAuthenticated)! { 
      sb = UIStoryboard(name: "Main", bundle: nil) 
     } else { 
      sb = UIStoryboard(name: "SetupUser", bundle: nil) 
     } 

     let vc = sb?.instantiateInitialViewController() 
     self.window?.rootViewController = vc 
     self.window?.makeKeyAndVisible() 

這工作的大部分時間,但如果用戶被更新或刪除表格數據庫應用程序稍後會繼續和崩潰因錯誤更新/保存對象。

回答

1

我建議在完成塊中使用fetchInBackground

PFUser.current()?.fetchInBackground(block : { (user, error) in 
      if let user = user { 
      //show Main 
      }else { 
      //showLogin 
      } 

    }) 

這樣你就可以在獲取用戶後執行你的邏輯。

+1

我應該有一個佔位符視圖,因爲它不僅僅是一個空白的屏幕,然後把代碼放在佔位符控制器中? – Minebomber

+0

是的,這會讓用戶體驗更好。它可以與LaunchScreen視圖相同,但您也可以製作動畫以「分散」用戶,直到抓取完成,然後繼續執行Main/Login – unniverzal

+0

感謝此。我有一個類似這樣的想法,但無法弄清楚如何實現它。 – Minebomber