我终于设法完成了我的第一个小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的理解是模型应该包含稍后由控制器处理的所有信息。
答案 0 :(得分:1)
您可以在控制器之间传递ToDoItem
对象的数组。但是声明ToDoItem
内与您的数据模型无关的数组将不符合MVC模式。
为了在其他地方访问数组,你可以传递它,例如可能使用单例或常见的对象,如AppDelegate。