Parse platform 更改PFObject上的ACL不会持久化到解析服务器

Parse platform 更改PFObject上的ACL不会持久化到解析服务器,parse-platform,parse-server,pfobject,Parse Platform,Parse Server,Pfobject,当我在PFObject上保存对ACL的更改(在本例中,使其可公开写入)时,完成块会成功运行,但更改不会实际保存到服务器。重新获取对象,或通过Parse Dashboard查看对象,表明ACL更改未持久化。事实上,我已经通过服务器日志验证了Parse服务器甚至从未收到请求 // first fetch an object from the parse server, then... print("before: \(object.acl?.hasPublicWriteAccess)") // "f

当我在
PFObject
上保存对
ACL
的更改(在本例中,使其可公开写入)时,完成块会成功运行,但更改不会实际保存到服务器。重新获取对象,或通过Parse Dashboard查看对象,表明
ACL
更改未持久化。事实上,我已经通过服务器日志验证了Parse服务器甚至从未收到请求

// first fetch an object from the parse server, then...
print("before: \(object.acl?.hasPublicWriteAccess)") // "false"
object.acl?.hasPublicWriteAccess = true
object.saveInBackground { (success, error) in
    // confirm that success is true and error is nil
    print("after: \(object.acl?.hasPublicWriteAccess)") // "true" - object is updated client-side

    // now, re-fetch the same object or check it in Parse Dashboard. It is not saved as publicly editable.
}

更改对象的
ACL
时,对象本身不会标记为“脏”,因此保存它不会导致向服务器发出请求。更改
ACL
后,可以通过检查对象上的
isDirty
属性来验证这一点

这与其他
PFObject
s一样-对指针属性的更改不会将父对象标记为脏对象。通常不会遇到这种情况,因为保存指针对象本身是很自然的。由于没有
PFACL.save()
函数,我们可以在对象上重新设置
acl
属性,以确保将其标记为脏:

object.acl?.hasPublicWriteAccess = toggle.isOn
object.acl = object.acl
object.saveEventually()
有关这方面的更多讨论,请参阅