如何在iOS 7上的三个ViewController之间使用核心数据传递数据

如何在iOS 7上的三个ViewController之间使用核心数据传递数据,ios,objective-c,core-data,segue,Ios,Objective C,Core Data,Segue,我有一个使用核心数据的Xcode项目(故事板和ARC,它是Xcode 5,iOS 7) 所以,问题是我有三个视图控制器 1) 显示对象列表的TableViewController。 2) ViewController1显示多个文本字段,用于从用户处获取信息。 3) 另一个ViewController2显示多个textview不可编辑的计算,这些计算是根据ViewController1 在第一个ViewController中,有两种方法可以转到第二个 1) 当用户按下tableView中的现有单元

我有一个使用核心数据的Xcode项目(故事板和ARC,它是Xcode 5,iOS 7) 所以,问题是我有三个视图控制器

1) 显示对象列表的
TableViewController
。 2)
ViewController1
显示多个
文本字段
,用于从用户处获取信息。 3) 另一个
ViewController2
显示多个
textview
不可编辑的计算,这些计算是根据
ViewController1
在第一个ViewController中,有两种方法可以转到第二个

1) 当用户按下tableView中的现有单元格时,更新现有对象。 2) 创建新对象。 当我创建一个新的问题时,我的问题就存在了

当我打算创建一个新对象时,我没有什么要传递的,所以,在准备segue时,我不发送任何东西

一旦进入
ViewController1
,我有以下代码来保存从文本字段获得的数据:

    NSManagedObjectContext *context = [self managedObjectContext];
    NSManagedObjectContext *newObject = [NSEntityDescription insertNewObjectForEntityForName:@"Object" inManagedObjectContext:context];

    [newSiembra setValue:self.nombreTF.text forKey:@"nombre"];
    [newSiembra setValue:self.datosTF.text forKey:@"datos"];


    NSError *error = nil;

    //save the object in the persistent store
    if (![_context save:&error])
    {
        NSLog(@"Can't save! %@ %@", error, [error localizedDescription]);
    }
如果我想在
ViewController2
文本视图中显示键
“datos”
的值,我需要传递数据以准备继续

如何将刚创建的对象传递给
ViewController2
? 在我的
ViewController2.h
中,我可以:

    @property (strong) NSManagedObject *object;
试图将
ViewController1
中最近创建的对象接收到属于
ViewController2

因此,在
视图控制器1
中段落的
-(无效)准备中,我应该有:

如果可以,请完成我的代码,替换问号。

创建新对象的常用方法是使用fetchedResultsController创建UITableView,当您单击+按钮时,代码将创建一个新对象,该对象显示在UITableView中。通常会使用默认名称,如“新文件夹”或其他名称

然后用户选择对象并转到详细视图

或者,当您单击+按钮时,创建新对象并以编程方式选择它,然后设置viewController2以传入新创建的对象。同时,您可以将viewController2.item属性设置为新创建的对象,以便它可以显示对item对象上属性的任何更改的结果

我不知道您是如何观察属性的更改的,但我假设您正在注册通知,然后在对象属性发生更改时更新UI

看看这里的示例应用程序,它允许您创建新对象,然后选择新对象并转到详细视图。如果我误解了您的问题,请发布其他问题

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {  
    if ([[segue identifier] isEqualToString:@"2"])
        {

        ViewController2 *destViewController = segue.destinationViewController;
        destViewController.object = ???????????

        }
    }