基于解析的应用程序无法区分匿名用户和普通用户

时间:2015-02-24 15:54:02

标签: ios swift parse-platform segue

我的应用的当前行为是: 启动应用程序
输入有效的用户名和密码(从登录屏幕)
点击登录
您将进入主菜单,如下所示:

enter image description here

我退出然后返回登录界面,如下所示:
enter image description here

我然后:
点击访客

segue:

override func prepareForSegue(segue: (UIStoryboardSegue!), sender: AnyObject!) {

    if (segue.identifier == "go-to-main-menu") {
        var svc = segue!.destinationViewController as MainMenuViewController
        svc.toPass = self.signUpObjectId
        println("inside login prep for segue, objectId: ")
        println(svc.toPass)

    }

if子句有点傻,因为我们此时只有一个segue,但两个按钮使用相同的segue标识符,但我认为这不是问题或原因。

我按以下方式调用(?)segue(来自Login视图的Guest和Login按钮):

//Go to main menu
self.performSegueWithIdentifier("go-to-main-menu", sender: nil)

我也和发送者一起尝试过:如果有任何可察觉的差异,我自己也没有多少。

它将应用程序发送到主菜单,除了我在viewDidLoad方法中添加了编码,用于检查用户类型,然后隐藏“配置文件”按钮并修改“注销”按钮的标题(如果用户是Parse匿名用户): / p>

    override func viewDidLoad() {
    super.viewDidLoad()

    //Hide my account button if user is guest and ensure title is LOGIN for but logout/login button if user is GUEST
    if PFAnonymousUtils.isLinkedWithUser(PFUser.currentUser()) {
        profileButton.hidden = false
        loginButton.setTitle("Logout", forState: .Normal)
    } else if PFUser.currentUser() != nil {
        profileButton.hidden = false
        loginButton.setTitle("Logout", forState: .Normal)
    }
    else {
        myAccountButton.hidden = true
        profileButton.setTitle("Login", forState: .Normal)
    }

如果我在iOS模拟器上重置内容和设置并从手机中删除应用程序,我会得到相同的行为:使用普通和匿名用户的初始登录和注销测试似乎正常。但经过几次,如果是这样的话,无论我是以匿名用户还是普通用户身份登录,它都会呈现相同的样式主菜单(普通或访客)并且不会更改。

我对如何开始正常工作而不是开始失败感到非常困惑。我的猜测是用户凭据被覆盖或以某种方式丢失,但我是Parse的新手,不知道如何调试这类问题。任何建议将不胜感激!

或者如果我一直在看这个太长时间,并且看不到我正在做的那个小小的,愚蠢的错误。

1 个答案:

答案 0 :(得分:1)

Parse.com为您缓存用户对象,因此当您认为用户已登录或注销以确认实际情况符合您的期望时,您应该尝试在各个点检查PFUser.currentUser()。即使只是在整个过程中将PFUser.currentUser()。description()记录到控制台也可以帮到你。