我有代码,我正在尝试获取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,然后在Parse中我指向User表,当我打印时。我可以看到所有的信息。它只是停止了工作思路,没有任何错误或解释。
var userPoint : PFUser? {
get {return objectForKey("userPointer") as? PFUser}
set { setObject(newValue!, forKey: "userPointer") }
}
答案 0 :(得分:0)
如果你想从查询中打印用户名,它必须来自返回的对象,在你的情况下是userData,如果它刚停止,你确定代码中没有任何断点吗?
self.userNameTextField.text = userData.username
答案 1 :(得分:0)
默认情况下,不包括从Parse指针对象中提取对象的情况。 PFObject
只有objectId
。如果要包含指针的所有属性,则需要使用带有指针名称的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
语句的实现。它什么都不做:)