更改 PFObject 上的 ACL 不会持久保存到解析服务器
Changing the ACL on a PFObject does not persist to the Parse Server
当我在 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
时,对象本身未标记为 'dirty',因此保存它不会导致向服务器发出请求。您可以通过在更改 ACL
.
后检查对象上的 isDirty
属性 来验证这一点
这与其他 PFObject
s 相同 - 对指针的更改 属性 不会将父对象标记为脏。这通常不会遇到,因为简单地保存指针对象本身是很自然的。由于没有 PFACL.save()
函数,我们可以改为在对象上重新设置 acl
属性 以确保它被标记为脏:
object.acl?.hasPublicWriteAccess = toggle.isOn
object.acl = object.acl
object.saveEventually()
可以在 this issue.
中找到对此的其他讨论
当我在 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
时,对象本身未标记为 'dirty',因此保存它不会导致向服务器发出请求。您可以通过在更改 ACL
.
isDirty
属性 来验证这一点
这与其他 PFObject
s 相同 - 对指针的更改 属性 不会将父对象标记为脏。这通常不会遇到,因为简单地保存指针对象本身是很自然的。由于没有 PFACL.save()
函数,我们可以改为在对象上重新设置 acl
属性 以确保它被标记为脏:
object.acl?.hasPublicWriteAccess = toggle.isOn
object.acl = object.acl
object.saveEventually()
可以在 this issue.
中找到对此的其他讨论