【问题标题】:Parse + iOS: 101 error when saving after a delete operationParse + iOS:删除操作后保存时出现 101 错误
【发布时间】:2015-12-28 03:26:02
【问题描述】:

在我的 iOS 应用程序中,我有一个显示 UserPhoto 对象的 PFQueryCollectionViewController。点击集合视图单元格会打开照片详细信息页面,用户可以在其中将 cmets 添加到照片中。在我从集合视图控制器(使用removeObjectsAtIndexPaths)或详细视图控制器(使用deleteInBackgroundWithBlock删除 UserPhoto 之前,此工作流程完美无误。

问题的范围很广。当我在执行删除操作后尝试对任何现有对象(不仅仅是 UserPhoto)执行 任何 类型的保存操作时,我得到:

"[Error]: object not found for update (Code: 101, Version: 1.11.0)"

  • 我已经三重检查了我正在尝试保存正确的对象,而不是刚刚删除的对象
  • 我可以注销我要保存的对象,并且它们的格式正确。
  • 我尝试保存的对象存在于 Parse 仪表板上
  • 所有对象的 ACL 都是 Public Read + Write
  • 删除后失败的保存操作可以正常工作,所以保存的代码没有问题

delete 操作后恢复save 功能的唯一方法是完全退出应用程序。

我要死在这里了。谢谢。

源代码

首先,一个简单的函数循环遍历来自collectionView 的选定照片数组并调用removeObjectsAtIndexPaths。尽管removeObjectsAtIndexPaths 有点神秘(文档有限),但我已经确认它会立即从 Parse 中删除对象。

func deleteSelectedPhotos() {
var indexPaths = [NSIndexPath]()
    for image in self.selectedImages {
        let index = self.objects.indexOf({ (photo: AnyObject) -> Bool in
            return image == photo as! PFObject
        })
        let indexPath = NSIndexPath(forItem: index!, inSection: 0)
        indexPaths.append(indexPath)
    }
    self.removeObjectsAtIndexPaths(indexPaths)
}

这是照片详情屏幕的删除代码:

func deleteUserPhoto() {
        currentPhoto.deleteInBackgroundWithBlock { (deleted: Bool, error: NSError?) -> Void in
            if let error = error {
                print("error deleting photo")
                print(error.localizedDescription)
            } else {
                if deleted == true {
                    self.delegate?.photoDetailVcDidDeletePhoto(self.currentPhoto)
                    self.navigationController?.popViewControllerAnimated(true)
                }
            }
        }
    }

底部附近的委托方法由PFQueryCollectionViewController 调用,因此它可以loadObjects 并更新UI 以反映删除。

【问题讨论】:

  • 你确认删除的对象真的被删除了吗?
  • 您是否有任何可能影响您正在保存的对象的 cloudCode(beforeDelete、afterDelete)?
  • @danh,是的,被删除的对象确实被删除了。我在删除后立即检查解析仪表板。
  • @DavidJirman,我还没有 cloudCode。
  • 我们来看看删除代码。

标签: ios parse-platform


【解决方案1】:

认为我解决了这个问题。当我创建新的UserPhoto 对象时,我将它们添加到父对象上的一个数组中——一个Album——并在没有完成块的情况下保存Album。我实际上并没有使用数组(而只是使用指向Album 的指针查询UserPhoto 对象)。

当我删除将照片添加到未使用数组的代码时,我能够再次更新和创建 UserPhoto 对象。我怀疑错误是指未完成保存的Album 对象(?)。

Album 完全排除在更新UserPhotos 的过程之外似乎已经做到了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    相关资源
    最近更新 更多