当我在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.
}
答案 0 :(得分:1)
更改对象的ACL
时,对象本身未标记为“脏”,因此保存它不会导致对服务器的请求。您可以通过在更改isDirty
之后检查对象的ACL
属性来验证这一点。
这与其他PFObject
相同-更改指针属性不会将父对象标记为脏对象。通常不会遇到这种情况,因为简单地保存指针对象本身是很自然的。由于没有PFACL.save()
函数,因此我们可以重新设置对象的acl
属性,以确保将其标记为脏:
object.acl?.hasPublicWriteAccess = toggle.isOn
object.acl = object.acl
object.saveEventually()
对此的其他讨论可以在this issue中找到。