【问题标题】:Parse .deleteInBackground not working (Swift)解析 .deleteInBackground 不起作用(Swift)
【发布时间】:2017-08-11 16:36:04
【问题描述】:

我第一次在 Xcode 和 Swift 3 中使用 Parse (parse.com)。当我尝试从云中删除此处的对象时,它没有更新并且我收到以下消息:

[Error]: Object not found. (Code: 101, Version: 1.12.0)

在我的代码的其他部分,删除对象工作得很好,但在这种情况下它不是。这也很奇怪,因为当我从查询(如下)打印请求时,我确实得到了一个对象,即我正在寻找的对象。我尝试使用块调用删除方法并得到相同的“找不到对象”错误。我已经确保数据库中的类启用了读写权限,如果有帮助的话。

这是我的代码:

let query = PFQuery(className: "FriendRequests")
query.whereKey("fromID", equalTo: self.incomingIDs[indexPath.row])
query.whereKey("toID", equalTo: PFUser.current()?.objectId)

query.getFirstObjectInBackground(block: { (object, error) in
    if error == nil {
        if let request = object {
            print(request) // This works!
            request.deleteInBackground()
        }
    }
})

提前谢谢你。

【问题讨论】:

  • if let request 是怎么回事?另外,使用request.deleteInBackground() 和进度块来查看错误对象。
  • 此外,这看起来是关系数据的完美用例。尝试添加一个名为 friendRequests 的列,而不是添加一个单独的类。这样你就可以打电话给PFUser.current().relation(forKey: "friendRequests")。然后,您可以像查询普通类一样查询它。
  • @evan.stoddard 我会尝试,这似乎是一个更优雅的解决方案。谢谢!

标签: ios swift parse-platform swift3


【解决方案1】:

我回过头来发现这只是 ACL 的问题,如果有人遇到过类似的问题...

当第一次创建对象时,只有发出请求的用户才有写权限。在保存请求对象之前,我将写入权限设置为 public。

let acl = PFACL()
acl.getPublicReadAccess = true
acl.getPublicWriteAccess = true
friendRequest.acl = acl

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    • 2017-01-05
    • 2017-01-14
    • 2013-08-06
    • 1970-01-01
    相关资源
    最近更新 更多