2017-08-11 92 views
0

我第一次用Xcode和Swift 3使用Parse(parse.com)。当我尝试从云端删除一个对象时,它不会更新,我得到以下消息:解析.deleteInBackground不工作(Swift)

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

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

这是我的代码:

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() 
     } 
    } 
}) 

预先感谢您。

+0

'if let request'是什么?另外,使用'request.deleteInBackground()'和progress块来查看错误对象。 –

+0

此外,这看起来是关系数据的完美用例。尝试添加一个名为“friendRequests”的列,而不是单独设置一个类。这样你可以调用'PFUser.current()。relation(forKey:“friendRequests”)''。然后,您可以像查看普通课程一样查询该问题。 –

+0

@ evan.stoddard我会试试看,似乎是一个更优雅的解决方案。谢谢! – Sidney

回答

0

我回到这个想通了这只是一个与ACL的问题,如果有人曾经也有类似的问题...

当对象首次创建,只有谁提出请求的用户有写入权限。在保存请求对象之前,我将写权限设置为public。

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