基于文档的最小应用程序的教程/示例

Eci*_*ana 8 cocoa document-based

我试图理解Cocoa中的东西是如何工作的,但我正在努力解决一件事.我看到http://cocoawithlove.com/2010/09/minimalist-cocoa-programming.htmlhttp://casperbhansen.wordpress.com/2010/08/15/dev-tip-nibless-development/我想我有点了解.

现在,我想对"基于文档的应用程序"做同样的事情.请问,有没有人知道类似上面的教程或示例?或者,我需要做些什么来使它工作?我想我需要创建NSDocumentController- 但它与NSApplication有什么关系?我NSDocument从那里创造?坦率地说,我有点失落......

Rog*_*ger 10

六个月前那是我!我没有找到一个像样的教程,但开始使用默认的Xcode项目模板的新项目:

在此输入图像描述

我开始使用Xcode为您启动的设置,当您开始一个新项目并在我进行时逐个实现.关于各种控制器类的使用,Stackoverflow上有一些很好的阅读,但这就是我所做的:

  • 由Xcode生成的文档类是我的顶级控制器.我不使用NSDocumentController.
  • 我的应用程序的每个用例都有许多NSViewControllers,它们管理用例的各种视图.这些控制器是动态交换进出的.顶级控制器由NSDocument类管理(在我使用Core Data时,在我的情况下为NSPersistentDocument).

我绝不是专家,因此我会采取更好的方法进行纠正,但到目前为止,这种设置易于使用,易于维护且易于扩展.

注意:使用核心数据是可选的,但随着时间的推移,我开始喜欢它,并认为它非常强大,节省了大量时间.当您决定不使用Core Data时,上述设置仍然有效,但您必须管理自己的数据.

编辑:这篇文章解释了NSDocumentController的相关性.

编辑2:Apple的这个也是一个有趣的读物.

编辑3:您确实需要NIB(或现在称为XIB),因为它们包含您的应用程序的UI.您通过视图控制器(子类NSViewController)将它们拉入:

NSString *aControllerName = [anIdentifier stringByAppendingString: @"ViewController"];
NSString *aNibName = [anIdentifier stringByAppendingString: @"View"];
Class aControllerClass = NSClassFromString(aControllerName);
[self setCurrentController: [[aControllerClass alloc] initWithNibName: aNibName bundle: [NSBundle mainBundle]]];
Run Code Online (Sandbox Code Playgroud)

在上面anIdentifier可能是Department,它将实例化DepartmentViewController并加载XIB名称DeparmentView.

您可以使用plist存储数据,但这不是必需的.存储应用数据的方法有很多种.您将不得不阅读Apple现有的各种架构并做出自己的选择.