从持久性存储中删除特定的托管对象?

时间:2013-07-19 09:38:58

标签: iphone ios objective-c core-data persistent-storage

我在IOS中使用Core Data特别陌生,我偶然发现了一个我似乎无法解决的问题。如果已有关于此事的帖子我提前道歉我看起来尽可能努力,而不会因为沮丧而破坏我的电脑。假设我有两个不同的视图控制器,View Controller 1和View Controller 2.此外,View Controller 1有一个“下一个”按钮,用户可以将用户带到View Controller 2.在View Controller 1中,我创建了一个托管对象A和做一个保存,所以现在我的持久存储用新的托管对象A更新。在点击下一步之后,在视图中执行了View Controller 2的加载方法,我想删除我在上一个视图中创建并保存的对象A.控制器。我究竟能做到这一点,最好的方法是什么?我能够提出的唯一解决方案是执行以下操作:

1)创建托管对象A,设置其属性并保存后,我可以获取刚刚创建的对象的“id”。

2)抓住这个“id”之后,我可以将这个NSManagedObjectId传递给prepareForSegue方法中的View Controller 2,然后在ViewController2中使用id来进行删除工作。

这是实现这一目标的唯一方式/正确方法,必须有更好的方法。

2 个答案:

答案 0 :(得分:0)

获取您创建的托管对象的实例,并将其传递给第二个视图控制器。如果要删除它:

NSManagedObjectContext *moc = self.managedObject.managedObjectContext;
[moc deleteObject:self.managedObject];
[moc save:&error];

答案 1 :(得分:0)

有几种方法可以做到这一点;如果不确切知道你想要达到的目的,我只能给出一些一般性意见。

首先,如果有另一种方法,将id传递给View Controller 2可能并不理想,因为您在视图控制器级别公开了实现细节。

有没有办法从VC2查询核心数据并找出你需要删除的方式?