Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 什么是;无法加载窗口nib文件";什么意思?_Macos_Cocoa - Fatal编程技术网

Macos 什么是;无法加载窗口nib文件";什么意思?

Macos 什么是;无法加载窗口nib文件";什么意思?,macos,cocoa,Macos,Cocoa,我正在开发我的第一个Cocoa应用程序,我非常希望 [NSWindowController loadWindow]: failed to load window nib file 'Genius Document' 这意味着我做错了一些非常具体的事情,因为如果我必须回去重做所有的绑定,我会想自杀 FWIW,我正在使用一个基于文档的应用程序,它(到目前为止)只有一个XIB文件,没有NIB文件 我可以发布绑定的代码/屏幕截图,但如果没有必要,我不想让人们费力地浏览它们 感谢您的帮助。您描述的错误最

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

[NSWindowController loadWindow]: failed to load window nib file 'Genius Document'
这意味着我做错了一些非常具体的事情,因为如果我必须回去重做所有的绑定,我会想自杀

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

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


感谢您的帮助。

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

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

NSDocument windowNibName

如果您依赖于文档体系结构的默认设置,那么您可能不会直接进行有问题的调用。相反,框架代表您进行调用,使用您在给定文档类上指定的任何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文件的名称不匹配,则会发生相同的错误。

我在Xcode中运行了一个Clean(Cmd-Shift-K),这为我解决了问题。

如果您有XIB文件,为什么要使用nib文件(我甚至不知道是否可以从Xcode的现代版本创建它们)?另外,您是以编程方式还是通过XIB实例化窗口控制器?假设您使用的是
NSWindowController
的某个子类,那么您的
init
(或类似)方法是什么样的?创建类时是否创建了
xib
?是否在initWithWindowNibName:方法中将xib名称提供为“foobar.xib”或仅为“foobar”?如果它在磁盘上命名为“foobar.xib”,则代码中应为“foobar”。我之所以提到这一点,是因为之前大家都知道它会让我绊倒。有时候,Xcode似乎会做一些有运行时问题的构建,比如这样。虽然您必须根据接受的答案正确地编写代码,但如果此错误来自以前工作过的nib,并且您的代码看起来都正常,那么清理、清理构建文件夹并重新启动Xcode可能会有所帮助。