gpt4 book ai didi

iphone - 删除 NSManagedObject "The operation couldn’ 后出错,无法完成”

转载 作者:行者123 更新时间:2023-12-03 20:14:17 26 4
gpt4 key购买 nike

所以我拥有一个对我来说运行良好的 Core Data 和 iCloud 组合数据库。

一些用户在尝试删除 UITableView 中表示的 NSManagedObject 后出现了一定的崩溃。在我附加到崩溃报告的调试日志中,崩溃前有以下错误日志:

2013-05-08 22:38:51.851 MyApp[11819:907] Unresolved error Error Domain=NSCocoaErrorDomain Code=134030 "The operation couldn’t be completed. (Cocoa error 134030.)", {
}

不幸的是,有关错误的信息:{} 为空,而且我自己从未遇到过该错误,所以我不知道如何重新创建它。不过,对于顾客来说,这种情况确实发生了至少 21 次。(更糟糕的是,一旦他们重新打开应用程序,某些 NSManagedObject 就处于无效状态,并且我的 tableview 加载它时出现问题。但这只是在侧面)

实际错误是“tableView:commitEditingStyle:forRowAtIndexPath:”中的“SIGABRT”,以下是相应的代码:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {

if (editingStyle == UITableViewCellEditingStyleDelete) {
ICLog(@"Deleting the row %i,%i from the data source", indexPath.row, indexPath.section);
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
[context deleteObject:[self.fetchedResultsController objectAtIndexPath:indexPath]];

//Save the context
NSError *error;
if (![context save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
}
}
}

PS:从日志中也可以清楚地看出这都是从主线程运行的。

这里有人也遇到过这个问题吗?

更新:

幸运的是,我在我正在开发的另一个应用程序中也遇到了同样的错误,在我也可以访问的设备中(到目前为止,我从未在我的任何设备上看到过这种情况),所以现在我可以在它发生了。这是我发现的:

a) 在设置中关闭 icloud 后仍然出现这种情况
b)每次我尝试删除或插入任何 NSManagedObject 时都会发生错误,即使我在启动后立即在 Appdelegate 中执行此操作,而无需访问其他地方的数据

所以看起来有些东西完全阻止了我的数据库的更新。我可以捕获上述异常,那么应用程序至少不会崩溃。但当然不会保存对数据库的更改。

最佳答案

当您尝试保存数据模型的无效状态时,经常会发生[上下文保存:]错误。

由于您之前删除了一个对象,所以我怀疑该对象与仍然存在的其他某个对象存在关系,但现在其关系处于无效状态(对于非可选关系,为零)

检查您的删除规则可能会有所帮助,也许与您删除的对象的某些关系需要是可选的,或者您必须正确传播删除。

关于iphone - 删除 NSManagedObject "The operation couldn’ 后出错,无法完成”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18318054/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com