Swift:构建成功,一个空白的应用程序窗口并显示以下消息:无法设置(contentViewController)用户定义的检查属性(NSWindow)

时间:2016-03-09 08:58:55

标签: xcode swift macos

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

  

2016-03-08 22:20:42.499复数[30404:2328250]无法设定   (contentViewController)用户定义的检查属性(NSWindow):   无法从对象< _NSControllerObjectProxy创建BOOL:   0x6000000022c0> _NSControllerObjectProxy类

这是我的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.
        }
    }   
}

我在这里找到了类似的帖子,但我认为这不是我想要的。

请帮帮我吗?

6 个答案:

答案 0 :(得分:2)

对我而言,我猜是时间问题。一切都是在我几天前添加SFAuthorizationView之后开始的,我发现由于一个错误报告,也很清楚这种情况发生在像Sierra这样的旧操作系统上,但它很好,相反,在10.13+。 将一些代码从viewDidLoad()移动到viewDidAppear()问题就消失了。 基本上我只是等待调用有问题视图的任何相关方法,稍后将viewcontroller内容视图声明为已加载。显然,在新操作系统中修复了一个Apple问题。因此,在实例化nib / xib / storyboard后,我认为任何人都会遇到这样的问题,应首先显示视图然后自定义它。只是我的见证。

答案 1 :(得分:1)

我遇到了这个问题并想出来了。

在我看来,我有一个用户定义的属性(如果你查看视图的顶部,你有视图控制器和第一响应者,你应该看到它旁边的图标)。

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

希望这有帮助!

答案 2 :(得分:0)

我已经创建了一个带有“故事板”的应用程序,即如果有一个包含您的视图和窗口的故事板文件,那么缺少两件事之一:

1)如果主窗口和应该是主视图的视图,则右键单击 - 从窗口控制器拖动到应该是主视图的视图。当弹出窗口发生时,单击“内容视图” “即如下:

Check out my video example

如果失败了,那么我将挖出计划二:)

这有多大帮助!!

阿德。

答案 3 :(得分:0)

有一件事可能对其他人有所帮助,我看到同样的消息,看起来像是contentViewController就是问题,但事实证明这是我写的东西中的另一个组件失败了。似乎窗口管理器捕获所有异常,而不仅仅是窗口异常,并打印这个欺骗性消息。对我有用的是逐步找到组件没有加载。

答案 4 :(得分:0)

当ViewDidLoad中存在错误或异常时,会发生这种情况。 确保已清除错误,并且您的用户界面将正常加载,并且您不会收到此消息。

答案 5 :(得分:0)

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

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.

要解决此问题,您需要在此处删除绑定: Effective Java