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

时间:2018-08-07 18:12:01

标签: parse-platform parse-server pfobject

当我在ACL上保存对PFObject的更改(在这种情况下,使其公开可写)时,完成块成功运行,但更改实际上未保存到服务器。重新获取对象或通过“分析仪表板”查看该对象,表明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.
}

1 个答案:

答案 0 :(得分:1)

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

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

object.acl?.hasPublicWriteAccess = toggle.isOn
object.acl = object.acl
object.saveEventually()

对此的其他讨论可以在this issue中找到。