最小的基于文档的应用程序的教程/示例
Posted
技术标签:
【中文标题】最小的基于文档的应用程序的教程/示例【英文标题】:Tutorial/example of a minimal document-based app 【发布时间】:2012-04-29 15:19:45 【问题描述】:我试图了解 Cocoa 中的东西是如何工作的,但我正在为一件事而苦苦挣扎。我看到http://cocoawithlove.com/2010/09/minimalist-cocoa-programming.html和http://casperbhansen.wordpress.com/2010/08/15/dev-tip-nibless-development/,我想我有点明白了。
现在,我想为“基于文档的应用程序”做同样的事情。请问,有没有人知道类似于上面的教程或示例?或者,我需要做什么才能使其工作?我想我需要创建NSDocumentController
- 但它与 NSApplication 有什么关系?我从那里创建NSDocument
?老实说,我有点迷路了……
【问题讨论】:
【参考方案1】:那是六个月前的我!我也没有找到像样的教程,而是使用默认的 Xcode 项目模板开始了一个新项目:
当您开始一个新项目时,我开始使用 Xcode 为您生成的设置,并在我进行过程中逐步实现。在 *** 上有一些关于各种控制器类的使用的很好的阅读,但这是我所做的:
由 Xcode 生成的文档类是我的***控制器。我不使用 NSDocumentController。 我的应用程序的每个用例都有许多 NSViewControllers 来管理用例的各种视图。这些控制器是动态换入和换出的。***控制器由 NSDocument 类管理(在我的例子中是 NSPersistentDocument,因为我使用的是 Core Data)。我绝不是专家,因此我支持更好的方法,但到目前为止,此设置易于使用、易于维护且易于扩展。
注意:使用 Core Data 是可选的,但随着时间的推移,我开始喜欢它,并认为它非常强大并且可以节省大量时间。当您决定不使用 Core Data 时,上述设置仍然有效,但您必须管理自己的数据。
编辑:post 解释了 NSDocumentController 的相关性。
EDIT2:来自 Apple 的 This one 也是一本有趣的读物。
EDIT3:您确实需要 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]]];
在上面的anIdentifier
可以是Department
,这将实例化DepartmentViewController
并加载XIB 名称DeparmentView
。
您可以使用 plist 来存储数据,但这不是必需的。有很多方法可以存储您的应用程序数据。您必须了解 Apple 现有的各种架构并做出自己的选择。
【讨论】:
我试图找到最简单、最规范的方法,我真的很喜欢上面的教程,因为它们很好地解释了内部工作。拜托,你介意发布一些代码吗?你为什么不使用NSDocumentController
?如果我想使用它,我应该把它放在哪里?我想我只有一个视图 - 每个文档一个窗口。
我在上一个问题中添加了关于使用 NSDocumentController 的解释。
@EcirHana:另请参阅我对 Roger 问题已接受答案的评论。
@Peter Hosey:这实际上是一个非常有用的评论。我很想把它归类为答案:-)
@Roger:是的,这正是我开始的方式。但后来我迷路了,因为它使用了 NIB 和 plist,而且没有 NSDocumentController 甚至应该有,......我需要任何捆绑软件才能让它工作吗?以上是关于最小的基于文档的应用程序的教程/示例的主要内容,如果未能解决你的问题,请参考以下文章