删除NSManagedObject时无法识别的选择器

时间:2013-11-22 04:07:52

标签: ios objective-c core-data

我想首先通过获取对象来删除核心数据对象,所以

在FetchObject.m

- (void) actionDelete {
    AModel *aModel = [[aModel alloc] init];
    AObj *aObj = [aModel readDataWithAttributeName:@"keyword" attributeValue:@"value"];

    [aModel deleteObject:aObj];
}

aObj确实取得并获得了。
在AModel.m

- (void)deleteObject:(AObj *)aObj
{
    [appDelegate.managedObjectContext delete:aObj];
    NSError *error;
    if (![appDelegate.managedObjectContext save:&error]) {
        NSLog(@"Error: %@", [error description]);
    }
}

但是,当我测试它时,出现了错误

-[NSManagedObjectContext delete:]: unrecognized selector sent to instance 0xa43ece0

稍微搜索一下解决方案后,似乎目标已经在deleteObject之前释放了。 有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:4)

以下代码导致问题:

[appDelegate.managedObjectContext delete:aObj];

将其替换为:

[appDelegate.managedObjectContext deleteObject:aObj];

NSManagedObjectContext没有delete方法,只有deleteObject方法。

  

- (void)deleteObject:(NSManagedObject *)object

     

<强>参数

     

对象

A managed object.
     

<强>讨论

     

提交更改后,对象将从uniquing中删除   表。如果对象尚未保存到持久性存储中,则为   只需从接收器中移除。