2016-02-27 78 views
0

我有代碼,我想獲得PFUser的用戶名。我得到用戶並能夠打印出來,但是當我到達用戶名的行時,代碼就停止了。沒有碰撞沒有,只是停止運行?獲取用戶名的解析用戶

任何想法,爲什麼會這樣做?

print(employeeObject) 
    firstName.text = employeeObject.firstName 
    lastName.text = employeeObject.lastName 
    if employeeObject.roleType != nil { 
     roleLabel.text = employeeObject.roleType?.roleName 
    } 
    if employeeObject.objectForKey("userPointer") != nil { 
     employeeObject.userPoint = employeeObject.objectForKey("userPointer") as! PFUser 
    } 
    if employeeObject.userPoint != nil { 
     let userID = employeeObject.userPoint!.objectId! 
     let query = PFUser.query() 
     query?.whereKey("objectId", equalTo: userID) 
     query?.getFirstObjectInBackgroundWithBlock({ (userData : PFObject?, error : NSError?) in 
      print(userData) 
      self.userLoginSwitch.setOn(true, animated: false) 
      self.userNameTextField.text = self.employeeObject.userPoint?.username! 
      self.passwordTextField.text = "" 
      self.emailAddressTextField.text = self.employeeObject.userPoint!.email 
      if self.employeeObject.userPoint!.objectForKey("isAdmin") as! Bool { 
       self.adminSwitch.setOn(true, animated: false) 
      } 
     }) 

    } 
    if employeeObject.active { 
     disableEnableEmployee.setTitle("Disable Employee", forState: .Normal) 
    } else { 
     disableEnableEmployee.setTitle("Enable Employee", forState: .Normal) 
     disableEnableEmployee.setTitleColor(UIColor.blueColor(), forState: .Normal) 
    } 

我userPoint鑄成一個PFUser,然後在解析我有它指向用戶表,當我打印。我可以看到所有的信息。它只是停止工作思想,沒有錯誤或解釋。

var userPoint : PFUser? { 
    get {return objectForKey("userPointer") as? PFUser} 
    set { setObject(newValue!, forKey: "userPointer") } 
} 
+0

然後你分類?顯示詳細資料。 – Wain

回答

0

當您從Parse提取對象時,默認情況下不包括指針對象。 objectId只有PFObject。如果要包含指針的所有屬性,則需要使用帶指針名稱的includeKey方法。所以,如果你查詢(地方更早)得到employeeObject你應該添加一行:

employeeQuery.includeKey("userPointer") 

在這個解決方案,你不會需要再次獲得這個用戶,因爲它的同一個對象。

@Mazels答案是第二種解決方案。您可以通過objectId得到相同的用戶,所以你可以從usedData

self.userNameTextField.text = userData["username"] 
self.emailAddressTextField.text = userData["email"] 
if userData["isAdmin"] as! Bool { ... 

最後一件事讀取數據:

if employeeObject.objectForKey("userPointer") != nil { 
    employeeObject.userPoint = employeeObject.objectForKey("userPointer") as! PFUser 
} 

這是多餘的。看看你的執行userPoint和這if聲明。它真的沒有什麼東西:)

0

,如果你想打印從它必須是從返回,你的情況的userdata對象查詢的用戶名和你確定你不要有任何破發點中你的代碼,如果它只是停止?

self.userNameTextField.text = userData.username