Swift绑定在Xcode 6 Beta 5中无法工作

12

我正在使用Swift在OSX上进行绑定的简单测试程序。

有一个NSTableView,NSArrayController和一个模型类,我试图将它们连接在一起,但没有成功!编译构建完成后,立即出现以下错误:Thread 1: EXC_BAD_ACCESS(code=1, address = 0x0)

代码如下:
模型类:

import Foundation

class Name {
   var firstName = "Brook"
   var lastName = "Brooklyn"
}

视图控制器:

import Cocoa

class ViewController: NSViewController {

    dynamic var names = [Name]()  // serves as the content for Array-Controller
                        
    override func viewDidLoad() {
        super.viewDidLoad()

        // populate array
        var name1 = Name()
        var name2 = Name()
    
        names.append(name1)
        names.append(name2)
                                
}

override var representedObject: AnyObject? {
    didSet {
    // Update the view, if already loaded.
    }
                                
}

}

我已经设置了数组控制器来使用我的类“Name”,并添加了“firstName”和“lastName”这两个键。

这是故事板:

Storyboard Bindings1 Bindings2

有谁已经成功地在 Xcode 6 Beta 5 上设置了绑定?任何帮助都将不胜感激!

谢谢!

编辑: 正如建议的那样,我尝试将“dynamic”关键字添加到属性中以启用绑定,但它会给出相同的错误并且不起作用。
我还尝试从 NSObject 子类化 “Name” 类,以便使用 Cocoa 的旧 Objective-C 支持,但绑定仍然无法工作!

3个回答

17

Beta 5 要求您在使用 KVO/bindings 时需要明确将属性设置为 dynamic

dynamic var firstName = "Brook"

请参阅发行说明中的动态声明修饰符部分,以获取更多信息。

dynamic 关键字可以使 KVO、代理和其他高级 Cocoa 特性可靠地与 Swift 声明一起使用。


我已经尝试添加了“dynamic”关键字,但它也不起作用! - Nairam

3
您需要选择表格视图单元格(Table View Cell)并将其值绑定到表格单元视图(Table Cell View)上,使用适当的objectValue。我不知道如何去除感叹号警告,但是它可以正常工作。

enter image description here


2

你正在使用NSCell或NSView的表格?对于这些表格,您设置绑定的方式是不同的。您所做的对于基于NSCell的表格是正确的。

今天我设置了一个NSTableView,它是基于NSView的表格,所以我不得不选择TextField并绑定到“Table Cell View”,使用Model Key Path“objectValue.name”

请查看Mac的Table View编程指南:使用Cocoa绑定文档填充表格视图


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接