Swift:为单个用户更改解析对象的ACL

时间:2015-04-21 00:11:51

标签: swift parse-platform acl

我有一个应用程序,其中一个用户(当前用户)授予其他用户访问他的数据的权限。当前用户输入他要授予访问权限的人的用户名。这是我的代码:

var generalInfo = PFObject(className:"ClientData")
generalInfo.objectId = clientIDPassed //This makes sure that I'm changing the right object. 
generalInfo.ACL = PFACL.ACLWithUser(newUserEmail.text) //newUserEmail.text is the text field. Error on this line. 
generalInfo.saveInBackground()

这是错误:

  

无法调用" ACLWithUser"使用类型'(字符串)'

的参数列表

我认为我的问题是newUserEmail.text是一个字符串,但Parse正在寻找一个PFUser。知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您需要传递PFUser对象。

您可以通过以下方式登录并获取当前用户:

var generalInfo = PFObject(className:"ClientData")
PFUser.logInWithUsernameInBackground(<#username: String#>, password: <#String#>, block: { (user, error) -> Void in
                    if user != nil && error != nil {
                        // user has logged in
                        generalInfo.objectId = clientIDPassed //This makes sure that I'm changing the right object. 
                        generalInfo.ACL = PFACL.ACLWithUser(user) // user which is passed by the login function.
                        /*
                           In my parse api (v1.7.1) PFACL.ACLWithUser is not available, instead I have to use:
                           PFACL(user: <#PFUser#>)
                        */
                        generalInfo.saveInBackground()
                    } else {
                        // do your error handling
                        println(error!.localizedDescription)   
                    }
                })

在其他功能和类中,您可以使用PFUser.currentUser()来获取登录用户。如果用户未登录,则返回nil

如果您想搜索用户,请执行以下操作:

var query = PFUser.query()!
query.whereKey("email", equalTo:userNameObject)
query.getFirstObjectInBackground { newUser, error in
  if error == nil {
    println(newUser)
    var userVariable = newUser.objectId as String
  }  
}