我想首先通过获取对象来删除核心数据对象,所以
在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之前释放了。 有什么方法可以解决这个问题吗?
答案 0 :(得分:4)
以下代码导致问题:
[appDelegate.managedObjectContext delete:aObj];
将其替换为:
[appDelegate.managedObjectContext deleteObject:aObj];
NSManagedObjectContext没有delete
方法,只有deleteObject
方法。
- (void)deleteObject:(NSManagedObject *)object
<强>参数强>
的对象强> 的
A managed object.
<强>讨论强>
提交更改后,对象将从uniquing中删除 表。如果对象尚未保存到持久性存储中,则为 只需从接收器中移除。