macos - "failed to load window nib file"是什么意思?

标签 macos cocoa

我正在开发我的第一个 Cocoa 应用程序,我非常希望

[NSWindowController loadWindow]: failed to load window nib file 'Genius Document'

意味着我做错了一些非常具体的事情,因为如果我必须返回并重做所有绑定(bind),我会想自杀。

FWIW,我正在使用一个基于文档的应用程序,该应用程序(到目前为止)只有一个 XIB 文件,没有 NIB 文件。

我可以发布我的绑定(bind)的代码/屏幕截图,但如果没有必要,我不想让人们费力地浏览它们。

感谢您的帮助。

最佳答案

您所描述的错误最终会发生,因为加载 nib 文件的调用失败。确保您为 Interface Builder 文件提供了正确的名称。

您可以通过多种方式提供正确的值(取决于您对 AppKit 的使用),因此我将列出两种最常见的可能性,您可以找出哪一种适用于您。鉴于您在问题中所说的内容,我怀疑您将处理第一种情况。

NSDocument 窗口NibName

如果您依赖文档架构的默认设置,则您可能不会直接进行有问题的调用。相反,框架会使用您在给定文档类上指定的任何 Nib 名称代表您进行调用。

例如,如果您要创建一个文档类为“XYZDocument”的新的基于文档的项目,Xcode 模板将为您提供基本的 XYZDocument 类和 XYZDocument.xib 文件。 XYZDocument 实现文件中将包含以下内容:

//  XYZDocument.m

- (NSString *)windowNibName {
    return @"XYZDocument"; // this name tells AppKit which nib file to use
}

如果您要更改此值,则会产生 [NSWindowController loadWindow] 错误。

NSWindowController初始化方法

如果您自己进行此调用(也许是在您自己的 NSWindowController 子类上),那么您将编写如下行。

//  XYZWindowController.m (a subclass of NSWindowController)

- (id)init {
    self = [super initWithWindowNibName:@"XYZDocument"];
    if (self) {
      // initializations
    }
    return self;
}

如果您提供的字符串参数与 nib 文件的名称不匹配,则会发生相同的错误。

关于macos - "failed to load window nib file"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12866994/

相关文章:

xcode - 在 XCode 项目中包含 OSXFUSE 框架

cocoa - 什么可能导致 -[NSPasteboard types] 崩溃?

ios - OSX : Auto layout/constraints not displaying content

SwiftUI-使 View 可聚焦并在macOS上触发操作

c++ - GCC 如何从静态库导出函数

objective-c - 使用 Cocoa/OSX 合并/堆叠两个图像

iphone - 以下语法的含义是什么? (objective-c 风格的方法调用)

iPhone Core 数据实体查找

macos - OSX上的Sublime Text : Spell checker does not learn

objective-c - 收听我的文本字段的值更改