代码之家  ›  专栏  ›  技术社区  ›  Ben Packard Ross Knipe

更改pfobject上的acl不会持续到分析服务器上

  •  0
  • Ben Packard Ross Knipe  · 技术社区  · 7 年前

    当我将更改保存到 ACL 在一 PFObject (在本例中,使其可公开写入),完成块成功运行,但更改实际上没有保存到服务器。重新获取对象或通过分析仪表板查看对象,会显示 国际计算语言学协会 更改不持久。事实上,我已经通过服务器日志验证了解析服务器从未收到请求。

    // 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 回复  |  直到 7 年前
        1
  •  1
  •   Ben Packard Ross Knipe    7 年前

    更改对象的 ACL 对象本身没有标记为“脏”,因此保存它不会导致向服务器发出请求。您可以通过检查 isDirty 在更改 国际计算语言学协会 .

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

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

    关于这一点的其他讨论可以在 this issue .