【问题标题】:Update cached copy of Parse currentUser() in Swift在 Swift 中更新 Parse currentUser() 的缓存副本
【发布时间】:2016-02-16 11:27:31
【问题描述】:

我有一个 ios 应用程序,我已经通过 Parse 实现了 Facebook 登录。在第一次试用中一切正常。

  • 我可以通过 Facebook 登录
  • 我的详细信息存储在 PFUser.currentUser() 中
  • 我能够从 Graph API 中提取信息

但是当我注销 (PFUser.logOut()) 并从 Parse 类中删除 User 行并从 Facebook 中删除应用程序时,事情开始成为问题。

以下方法仍然显示用户已登录并通过身份验证。

if let user = PFUser.currentUser() {
if user.isAuthenticated()

我猜这是因为当前用户仍在使用用户的缓存副本。我尝试执行

do
{
  try PFUser.currentUser().fetch()
}
catch{
print("User refreshed")
}

但它不会刷新 currentUser() 并给出错误。如何刷新 PFUser.currentUser(),以便它停止说用户已登录并经过身份验证,即使它不是

谢谢

【问题讨论】:

    标签: ios facebook swift caching parse-platform


    【解决方案1】:

    我在这里得到了答案,

    Swift & Parse - PFUser currentUser never equals nil

    我一直在为注销而苦苦挣扎,我相信我终于破解了!

    无论我做什么,当我使用“PFUser.logOut()”时,都不会将“PFUser.currentUser()”设置为 nil,但它会将“PFUser.currentUser()!.username”设置为 nil.. .

    因此我使用了

    var currentUser = PFUser.currentUser()!.username
    

    作为要跟踪的全局变量是用户是否登录。

    在我的登录/第一页我添加了

    覆盖 func viewDidAppear(animated: Bool) {

    if currentUser != nil {
    
        self.performSegueWithIdentifier("login", sender: self)
    
    }
    
    }
    

    最后在我使用的注销按钮上

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    
    if segue.identifier == "logout" {
    
        PFUser.logOut() //Log user out
    
        currentUser = PFUser.currentUser()!.username //Reset currentUser variable to nil
    
    }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-27
      • 1970-01-01
      • 2011-09-09
      • 1970-01-01
      相关资源
      最近更新 更多