Xcode Swift:生成成功,出现一个空白的应用程序窗口,并显示以下消息:未能在(NSWindow)上设置(contentViewController)用户定义的已检查属性

Xcode Swift:生成成功,出现一个空白的应用程序窗口,并显示以下消息:未能在(NSWindow)上设置(contentViewController)用户定义的已检查属性,xcode,swift,macos,Xcode,Swift,Macos,我尝试使用类创建一个简单的复数计算器。我的应用程序已成功编译,但当我运行它时,出现了一个空白窗口,而不是包含所有按钮、标签等的窗口。我在输出窗口中收到以下消息: 2016-03-08 22:20:42.499复数[30404:2328250]设置失败 (contentViewController)上的用户定义已检查属性(NSWindow): 无法从类的对象创建BOOL\n控制器对象代理 这是我的ViewController类代码。它涉及一个complexNumber类,我没有在这里提交: cla

我尝试使用类创建一个简单的复数计算器。我的应用程序已成功编译,但当我运行它时,出现了一个空白窗口,而不是包含所有按钮、标签等的窗口。我在输出窗口中收到以下消息:

2016-03-08 22:20:42.499复数[30404:2328250]设置失败 (contentViewController)上的用户定义已检查属性(NSWindow): 无法从类的对象创建BOOL\n控制器对象代理

这是我的ViewController类代码。它涉及一个complexNumber类,我没有在这里提交:

class ViewController: NSViewController {

    @IBOutlet var Screen: NSView!
    var a = complexNumber();

    @IBOutlet var realValue: NSTextField!

    @IBOutlet var imaginaryValue: NSTextField!

    @IBOutlet var resultLabel: NSTextField!

    @IBAction func lengthResult(sender: AnyObject) {

        let r = NSString(string: realValue.stringValue).doubleValue;
        let i = NSString(string: imaginaryValue.stringValue).doubleValue;

        a = complexNumber(real: r, imaginary: i);
        resultLabel.stringValue = String(a.trigonometric());
    }

    @IBAction func trigonometryResult(sender: AnyObject) {
        let r = NSString(string: realValue.stringValue).doubleValue;
        let i = NSString(string: imaginaryValue.stringValue).doubleValue;

        a = complexNumber(real: r, imaginary: i);
        resultLabel.stringValue = String(a.length());  
    }

    @IBAction func operation(sender: AnyObject) {
        a = complexNumber(real: NSString(string: realValue.stringValue).doubleValue, imaginary: NSString(string: imaginaryValue.stringValue).doubleValue);
        realValue.stringValue = ""
        imaginaryValue.stringValue = "";

        let b = complexNumber(real: NSString(string: realValue.stringValue).doubleValue, imaginary: NSString(string: imaginaryValue.stringValue).doubleValue)

        switch sender.stringValue {
            case "+": a = a.sum(b)
            case "-": a = a.dif(b)
            case "x": a = a.mul(b)
            case ":": a = a.div(b)
            default: a = a.sum(complexNumber())
        }
    }

    @IBAction func displayResult(sender: AnyObject) {
        resultLabel.stringValue = String("\(a.real) + i*\(a.imaginary)");
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

    override var representedObject: AnyObject? {
        didSet {
        // Update the view, if already loaded.
        }
    }   
}
我在这里发现了一条类似的线索,但我不认为这是我一直在寻找的


你能帮帮我吗?

我知道你创建了一个带有“情节提要”的应用程序,即如果其中有一个情节提要文件,其中包含你的视图和窗口,那么缺少两件事之一:

1) 如果有一个主窗口和一个视图应该是它的主视图,那么右键单击-从窗口控制器拖动到应该是主视图的视图。。出现弹出窗口时,单击“内容视图”,即如下所示:

如果失败了,那么我会找出第二个方案:)

这有什么帮助


艾德。

我遇到了这个问题,并且解决了

在我的视图中,我有一个用户定义的属性(如果您查看视图的顶部,其中有view controller和first responder,您应该会看到它旁边的图标)

只需删除它并运行应用程序


希望这有帮助

我想对我来说是个时间问题。这一切都始于几天前我添加了一个SFAuthorizationView之后,我发现多亏了一个bug报告,很明显这也发生在像Sierra这样的较旧操作系统上,但在10.13+中是可以的。 将一些代码从viewDidLoad()移动到ViewDidAspect(),问题就消失了。
基本上,我只是等待在viewcontroller内容视图声明为已加载之后调用问题视图的任何相关方法。显然,新操作系统解决了苹果的问题。因此,在实例化所涉及的nib/xib/storyboard之后,我认为任何遇到类似问题的人都应该首先显示视图,然后对其进行定制。只是我的证词。

有一件事可能会对其他人有所帮助,我看到了同样的信息,看起来contentViewController是问题所在,但事实证明这是我正在编写的东西中的另一个组件失败了。窗口管理器似乎捕捉到了所有异常,而不仅仅是窗口异常,并打印出这条欺骗性消息。对我来说,有效的方法是逐步查找组件未加载

当ViewDidLoad中出现错误或异常时,会发生这种情况。
确保错误被清除,您的UI将正常加载,并且您不会收到此消息。

另一个原因-当您设置错误的绑定时。 我的错误示例:

Failed to set (contentViewController) user defined inspected property on (NSWindow): [<NSProgressIndicator 0x10111b890> valueForUndefinedKey:]: this class is not key value coding-compliant for the key Enabled.
未能在(NSWindow):[valueForUndefinedKey:]上设置(contentViewController)用户定义的已检查属性:对于启用的键,此类不符合键值编码。
要解决此问题,您需要在此处删除绑定:

如何将此视图控制器的视图设置为主窗口的contentView?谢谢,Ade,我已经这样做了,但它仍然不起作用。您有没有办法在github上发布一个空白项目供我们查看?我只是想知道这是插件问题还是其他什么问题?第二个计划在哪里?@AdrianSluyters-link在故事板中出现了吗?谢谢。这是我的问题。没有意识到我甚至设置了引用绑定。