在哪里存储数据以遵循MVC模式

时间:2013-02-24 17:23:52

标签: objective-c macos model-view-controller model

我终于设法完成了我的第一个小osx应用程序,我为自己感到骄傲!但我仍然对我真正想要遵循的obj-c MVC方法感到困惑。阅读所有不同的教程并没有给我最后的线索。 我使用Hillegass的书“MAC OS X的可可编程”。以下模式用于在我的控制器类中通过tableview将用户输入绑定到NSArrayController

- (IBAction)pushAdd:(id)sender {

    ToDoItem *newToDo = [[ToDoItem alloc] init];

    [newToDo setValue:[_inputName stringValue] forKey:@"name"];
    [newToDo setValue:[NSNumber numberWithDouble:[_inputNomValue doubleValue]] forKey:@"nomValue"];
    [newToDo setValue:[NSNumber numberWithDouble:[_inputTolerancePlus doubleValue]] forKey:@"tolerancePlus"];
    [newToDo setValue:[NSNumber numberWithDouble:[_inputToleranceMinus doubleValue]] forKey:@"toleranceMinus"];
    [newToDo setValue:[NSString stringWithFormat:@"%@",[_inputDistribution titleOfSelectedItem]] forKey:@"distribution"];
    [newToDo setValue:[NSString stringWithFormat:@"%@",[_inputDirection titleOfSelectedItem]] forKey:@"direction"];

    [toDoItemArrayController addObject:newToDo];

...

我的问题:

由于我的模型类ToDoItem用作创建ToDoItem实体的蓝图,因此完整信息存储在toDoItemArrayController控制器(不在模型中)中。 但是,如果我需要在其他地方使用数组信息呢?我是否需要在ToDoItem模型类中使用toDoItemArrayController中的所有信息定义其他数组?到目前为止,我对MVC的理解是模型应该包含稍后由控制器处理的所有信息。

1 个答案:

答案 0 :(得分:1)

您可以在控制器之间传递ToDoItem对象的数组。但是声明ToDoItem内与您的数据模型无关的数组将不符合MVC模式。
为了在其他地方访问数组,你可以传递它,例如可能使用单例或常见的对象,如AppDelegate。