2013-07-19 47 views
0

我在IOS中使用核心数据特别新,我偶然发现了一个我似乎无法解决的问题。如果已经有关于此的帖子,我事先表示道歉,但是我已经尽可能的努力了,而不会因为挫折而破坏我的电脑。让我们说我有两个不同的视图控制器,View Controller 1和View Controller 2.此外,View Controller 1有一个“下一个”按钮,可以让用户访问View Controller 2.在View Controller 1中,我创建一个托管对象A和做一个保存,所以现在我的持久性存储更新为新的托管对象A.在接下来点击视图控制器2的视图加载方法后,我想删除此对象A,该对象A是我在前一视图中创建并保存的控制器。我该如何做到这一点,什么是最好的方法?我已经能够提出的唯一的解决方案是做到以下几点:从持久存储中删除特定的托管对象?

1)创建我的托管对象A,设置其属性和保存后,我可以抓住我刚刚创建的对象的“ID”。

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

这是做到这一点的唯一方式/正确方法,必须有更好的方法。

回答

0

获取您创建的管理对象的实例并将其传递给第二个视图控制器。当你想删除它:

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

如何获取我创建的托管对象的实例?我只知道如何使用“insertNewObjectForEntityName:inManagedObjectContext:”创建一个托管对象实例,但在创建托管对象之后,我如何获取我刚刚创建的实例。这实质上是我的问题的关键。 – AyBayBay

+0

该方法返回新的实例。你明白指针是什么吗?而实际情况是什么? – Wain

+0

这里也许粘贴一些代码片段会有所帮助。我试着按照你的意见,我的对象仍然没有被删除。在控制器1中,我得到了我通过执行以下操作创建的托管对象的实例:CurrentUser * user =(CurrentUser *)[NSEntityDescription insertNewObjectForEntityForName:@“CurrentUser”inManagedObjectContext:self.managedObjectContext]; self.managed_object_instance = user(managed_object_instance是NSManagedObject)这是我如何获得我创建的对象的实例? – AyBayBay

0

有几种方法可以做到这一点;不知道你想要达到什么目的,我只能给出一些一般性评论。

首先,如果有另一种方法来实现,传递一个id到View Controller 2中可能不是很理想,因为你在视图控制器级暴露实现细节。

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

+0

这正是我想弄清楚的,我不知道该怎么做,你是对的我不想继续在视图控制器之间来回传递我的NSManagedObjectID,我也不想继续传递托管对象并且。我真的不知道这个最好的方法 – AyBayBay

相关问题