更新查询对象上的 Parse ACL

Posted

技术标签:

【中文标题】更新查询对象上的 Parse ACL【英文标题】:Update Parse ACL on queried object 【发布时间】:2018-02-04 05:36:25 【问题描述】:

在我的 ios 应用程序中,我正在制作一个 PFObject 并将其保存到 Parse。后来,创建了一个用户的帐户(以前不存在),并尝试修改它但不能,因为 PFObjects 的 ACL 未设置为允许该用户拥有权限。如何修改 Parse 中现有对象的 ACL 以允许该用户访问?我不想允许公共写访问。

如果给定正确的 code 查询参数,则以下代码将打印 Success!,但是当我在 Parse 中检查 ACL 时,它根本没有更新。

let query = PFQuery(className: "Bike")
query.whereKey("bikeID", equalTo: code)
query.findObjectsInBackground  (objects: [PFObject]?, error: Error?) in
    guard let obj = objects?[0], error == nil else 
        print("Error")
        return
    
    obj.acl?.setWriteAccess(true, for: PFUser.current()!)
    obj.saveInBackground  (success: Bool, error: Error?) in
        if error != nil 
            print(error!.localizedDescription)
        
        else 
            print("Success!")
        
    

This post 似乎暗示无法通过我的应用程序的 Swift 代码更改 ACL。

【问题讨论】:

【参考方案1】:

如果您知道要预先授予访问权限的对象,您可以在 User 类的 CloudCode afterSave 挂钩中更改它的 ACL:在 afterSave 中,测试用户是否刚刚创建(到避免为后续的保存请求重做这项工作),然后查找对象并使用主密钥设置访问权限。

【讨论】:

以上是关于更新查询对象上的 Parse ACL的主要内容,如果未能解决你的问题,请参考以下文章

Parse 不会更新特定的类

无法快速删除 Parse 对象 - ACL 问题?

解析云代码之前保存未在更新时运行

设置 UITabBarItem 徽章

使用 Parse 在 iOS Swift 中更新对象

在 Parse 中一次更新多个对象