我正在学习macOS应用程序开发的基于文档的应用程序架构,但对此感到困惑。
我用Xcode创建了一个基于文档的应用程序。应用程序模板创建了一个简单的基于文档的应用程序。它可以运行,并在运行时自动创建一个新文档。
我的问题是:这个应用程序如何启动文档架构?我认为应该有一些类似以下的代码:
NSDocumentController *docController;
docController = [NSDocumentController sharedDocumentController];
[docController newDocument:self];但我在创建的应用程序中找不到任何这样的代码。app委托中的-(空)applicationDidFinishLaunching:方法为空。此外,在主nib文件中没有任何NSDocumentController对象。
那么,这个应用程序如何知道它应该使用文档架构,初始化一个NSDocumentController,然后创建一个新文档呢?
发布于 2020-02-12 10:16:18
这个应用程序怎么知道它应该使用文档架构,初始化一个NSDocumentController,然后创建一个新文档?
我不清楚Xcode的内部工作原理,但似乎在应用程序的info.plist中,CocoaNSDocumentClass必须设置为Document,Role必须设置为Editor (或Viewer、None或Shell)才能创建文档。在您的演示中,尝试删除plist中的这两行中的一行或两行,并查看应用程序是否仍然有效。这两个设置都位于文档类型的第二级。在我的经验中,删除这两行中的任何一行都会破坏应用程序,并恢复正确的设置来修复它。在以编程方式创建的基于文档的应用程序(无nib)中,并使用终端进行编译时,当我进入包中并在删除上面提到的一个或其他info.plist设置后运行可执行文件时,会生成以下错误。
2020-02-11 19:31:48.294 nsdoc_demo[1606:658926] NSDocumentController Info.plist warning: The values of CFBundleTypeRole entries must be 'Editor', 'Viewer', 'None', or 'Shell'.
2020-02-11 19:38:46.355 nsdoc_demo[1748:680819] -[NSWindowController loadWindow]: failed to load window nib file 'Document'.未设置CocoaNSDocumentClass时,Xcode (使用Document.xib)会生成以下错误:
2020-02-11 16:22:03.022602-0600 docExpt[1166:428702] The DocumentType type doesn't map to any NSDocumentClass.根据我的经验,源代码可能没问题,但如果info.plist设置不正确,基于文档的应用程序将无法正常工作。
https://stackoverflow.com/questions/60167944
复制相似问题