【发布时间】: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