4

核心数据让我很紧张。我正在删除旧数据并想插入从服务器接收到的新数据。

现在删除部分给出了“sigabort”:

-[NSManagedObjectContext delete:]:无法识别的选择器发送到实例 0x522f550 2013-09-27 14:05:56.592 * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[NSManagedObjectContext delete:]:无法识别的选择器发送到实例 0x522f550 ' *第一次拨打调用堆栈:( 0x320F82A3 0x39D4797F 0x320FBE07 0x320FA531 0x32051F68 0x1B6C53 0x1868E5 0x3aa1515f115f11f11f11f11f11f 0x3a16d259 dyx3a 0x3a 0x3a+terriation liriant extriation liriate

删除发生在后台,nsmanagedobjectcontext 是 privet 并发类型我打印了上下文和对象上下文的指针

po 上下文 NSManagedObjectContext: 0x522f550

po tmpCon.managedObjectContext NSManagedObjectContext: 0x522f550>

删除的代码是:

     NSError *errorAllCons = nil;
    NSFetchRequest *allevents = [[NSFetchRequest alloc] init];
    [allevents setEntity:[NSEntityDescription entityForName:@"TEventContact" inManagedObjectContext:context]];
    NSArray *allCons = [context executeFetchRequest:allevents error:&errorAllCons];
    for (TEventContact *tmpCon in allCons)
    {
        [context delete:tmpCon];
    }

它崩溃了[context delete:tmpCon]; 有人可以让我知道我做错了什么吗?

4

2 回答 2

24

利用

 [context deleteObject:tmpCon];

它会解决问题

于 2013-09-27T12:22:14.760 回答
2

这样做是为了永久删除一个对象

for (TEventContact *tmpCon in allCons)
{
    [context deleteObject:tmpCon] /// for deleting object in context
}    
[context save]; /// to reflect changes in database you need to save that context

如果不保存上下文,它不会反映在数据库上,这可能会导致 DIRTY_READ 用于另一个上下文

于 2013-09-27T12:38:41.657 回答