核心数据关系和多视图控制器

时间:2012-01-10 23:36:28

标签: objective-c ios5

我正在寻求澄清,我只是陷入困境。我希望我很亲密。提前感谢您的帮助。

设置

我有三个视图控制器:表视图控制器,第一个视图控制器和第二个视图控制器。表视图控制器有一个“新”按钮和表格单元格。新按钮连接到'addStuff'segue,而'editStuff'的表格单元格连接到第一个视图控制器。第一个视图控制器类似地设置了两个按钮通过segues'addMoreStuff'和'editMoreStuff'连接到第二个视图控制器。 有两个实体:'stuff'和'moreStuff'在模型中设置,具有NSManaged Object的自定义子类。有一对一的关系,反过来。 (来自Stuff的'moreStuff'关系,以及来自MoreStuff的'stuff'关系)。

有委托方法从第二个视图控制器返回到第一个视图控制器。

-(void)secondViewController:(SecondViewController *)controller didAddMoreStuff:(MoreStuff *)moreStuff;
-(void)secondViewController:(SecondViewController *)controller didEditMoreStuff:(MoreStuff *)moreStuff;

第一和第二个视图控制器中基本上都有textFields。第一个视图控制器textFields为'stuff'实体提供数据,第二个视图控制器textFields为'moreStuff'实体提供数据。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    if ([segue.identifier isEqualToString:@"editMoreStuff"]) {
      // Make and instance of the destination view controller and set it to the destination view controller.
      SecondViewController* svc = segue.destinationViewController;
      svc.delegate = self;

      // I want the moreStuff associated with the current stuff to populate.
      NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
      MoreStuff* moreStuff = [MoreStuff moreStuffInManagedObjectContext:context];
      savc.moreStuffToEdit = moreStuff;
    }

    else if ([segue.identifier isEqualToString:@"addMoreStuff"]) {
      // Make and instance of the destination view controller and set it to the destination view controller.
      // This is called when no moreStuff has been called before.  Need to prohibit if it has been.
      SecondViewController* svc = segue.destinationViewController;
      svc.fetchedResultsController = self.fetchedResultsController;
      svc.delegate = self;
      //show moreStuff if it is available
    }
}

问题1.如果将数据输入第一个视图控制器,然后激活“addMoreStuff”segue,则“stuff”数据尚未保存。此人将数据添加到第二个视图控制器textFields,然后点击'done'通过模板提供的'saveContext'样板文件方法保存'moreStuff'对象,然后返回到第一个视图控制器。现在,如果该人决定使用'editMoreStuff'segue返回第二个视图控制器,我如何使用'moreStuff'对象预填充textFields?

我认为在SecondViewController的viewDidLoad中它会是这样的,但没有快乐:

- (void)viewDidLoad {
    [super viewDidLoad];
    if (self.moreStuffToEdit != nil) {
        self.firstTextField.text = self.moreStuffToEdit.first;
        self.secondTextField.text = self.moreStuffToEdit.second;
    }
}

问题2.在哪里/如何与'stuff'对象建立关系?我认为它是这样的:

stuffObject.moreStuff = moreStuffObject;

但我不确定何时这样做。谢谢大家。

0 个答案:

没有答案