2015-02-24 26 views
0

我的應用程序的當前行爲是不區分:啓動應用
上登錄
輸入有效的用戶名和密碼(從登錄屏幕)
單擊要帶到主菜單看起來像:
基於語法分析程序的匿名和普通用戶之間

enter image description here

我註銷,然後得到被帶回登錄屏幕,看起來像這樣:
enter image description here

然後我:
點擊客戶

的賽格瑞:

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語句是一個有點傻,因爲我們只有在這一點上一個賽格瑞但和兩個按鈕使用我相信,這不是問題或原因。

我撥打以下方式賽格瑞(無論從登錄視圖的來賓和登錄按鈕)(?):

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

我也有發送者嘗試過:自己沒有太大的,如果任何可察覺的差異。

它將應用程序發送到主菜單,但我在viewDidLoad方法中添加了代碼,該方法檢查用戶類型,然後隱藏配置文件按鈕並修改註銷按鈕的標題(如果用戶是解析匿名用戶):

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模擬器的內容和設置,我從手機中刪除應用程序,我會得到相同的行爲:inital登錄和使用正常的和匿名用戶註銷測試似乎工作確定。但幾次之後,如果是這樣的話,無論我是以匿名用戶還是普通用戶身份登錄,它都會呈現相同樣式的主菜單(普通或來賓),並且不會更改。

我很困惑,這將如何開始正常工作,比開始失敗。我的猜測是用戶證書被覆蓋或丟失,但我是Parse的新手,不確定如何調試這類問題。任何建議將不勝感激!

或者如果我一直在尋找這個太多的小時,並且看不到我犯的這個小而​​愚蠢的錯誤。

回答

1

Parse.com會爲您緩存用戶對象,因此您應該在您認爲用戶已登錄或註銷以確認實際符合您的期望時嘗試在各個點上檢查PFUser.currentUser()。即使只是在整個過程中將PFUser.currentUser()。description()記錄到控制檯也能幫助你。

+0

今天(美國東部時間下午5點左右),當我接觸到我的蘋果機時,我會給你一個鏡頭。感謝您的描述提示。 – lostinthebits 2015-02-24 18:52:08

+0

這完全讓我過駝峯。非常感謝。 – lostinthebits 2015-02-24 22:59:09

相關問題