1.如果当前用户是管理员角色或员工角色,我试图关闭我的segue。 2.问题似乎是在角色查询之后......我可以将这些角色名称列表打印到阵列中的控制台......但是我无法弄清楚如何查看当前用户是否是在该列表中,如果他们在该列表中,则相应地进行相应的..提前致谢!
func checkEmployeeOrAdmin() {
var roleQuery = PFRole.query()
roleQuery!.whereKey("name", equalTo: "admin")
roleQuery!.getFirstObjectInBackgroundWithBlock() { (roleObject: PFObject?, error) -> Void in
var adminRole = roleObject as! PFRole
adminRole.users.query()?.findObjectsInBackgroundWithBlock({ (users, error:NSError?) -> Void in
if let adminUsers = users as? [PFUser] {
if adminUsers.usernames == PFUser.currentUser()?.username {
**//error is here....[PFUser] does not have a member named username...
println("\(adminUsers)")
self.performSegueWithIdentifier("toAdmin", sender: self)
}else {
println("nothingFound")
self.performSegueWithIdentifier("toEmployee", sender: self)
答案 0 :(得分:2)
您不应该通过用户名进行比较,您能保证它们始终是全球唯一的吗?您应该比较整个用户对象或objectId
。
您当前的代码正在尝试向Array询问其用户名,但它没有。相反,你应该迭代数组中的对象并分别询问每个对象然后进行比较。
您可以为此创建可重复使用的函数,或者您可以使用NSArray
方法containsObject:
来为您执行此操作。
使用swift数组,您还可以使用filter
对数组中的每个项目运行逻辑测试并返回匹配项(然后检查匹配项的计数)。