【问题标题】:Swift: Changing a Parse Object's ACL for a Single UserSwift:为单个用户更改解析对象的 ACL
【发布时间】:2015-04-21 15:49:54
【问题描述】:

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

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。知道如何解决吗?

【问题讨论】:

  • 通过传递 PFUser 对象而不是 String
  • @nhgrif 如何将 newUserEmail.text 转换为 PFUser?这不起作用: userPF = newUserEmail.text as? PFUser 没有工作。谢谢!
  • 我不知道。看一些文档。我假设您不能只将字符串转换为用户......这不一定有多大意义。
  • 对不起,我的回答是假的。我改了。用户无法访问安装表。

标签: swift parse-platform acl


【解决方案1】:

你需要传递一个 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
  }  
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多