Swift绑定无法使用Xcode 6 Beta 5 [英] Swift Bindings won't work Xcode 6 Beta 5

查看:107
本文介绍了Swift绑定无法使用Xcode 6 Beta 5的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用OSX上Swift中的绑定来做一个简单的测试程序。
有一个NSTableView,NSArrayController和一个模型类,我试图将它们
连接在一起,但是没有成功!该版本会编译,但会立即给出以下错误:
线程1:EXC_BAD_ACCESS(code = 1,address = 0x0)

I'm doing a simple test program using bindings in Swift on OSX. Having an NSTableView, NSArrayController and a model class I try to hook them up together, but without success! The build compiles but gives instantly this error: Thread 1: EXC_BAD_ACCESS(code=1, address = 0x0)

代码如下:

模型类:

Code looks like this:
model class:

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.
    }
                                
}

}

我已将阵列控制器设置为使用我的类名称并添加了键 firstName和 lastName

I've setup the array controller to use my class "Name" and added the keys "firstName" and "lastName"

这是情节提要:



有人在Xcode 6 Beta 5上成功建立绑定吗?
感谢您的帮助!

Has anyone already had any success setting up bindings on Xcode 6 Beta 5? Any help is appreciated!

谢谢!

编辑:
如我所建议添加动态该属性的关键字以启用绑定,但它给出了相同的错误,并且不起作用。

我也尝试将名称子类化。为了使用来自Cocoa的旧的Objective-C支持,请使用NSObject中的类,但是绑定仍然无法正常工作!

As suggested I tried adding the "dynamic" keyword to the property to enable bindings, but it gives the same error and doesn't work.
I've also tried subclassing the "Name" class from NSObject in order to use the old Objective-C support from Cocoa, but bindings still don't work!

推荐答案

Beta 5要求您将属性明确设置为 dynamic 才能使KVO /绑定起作用:

Beta 5 requires you to explicitly set your properties as dynamic in order for KVO/bindings to work:

dynamic var firstName = "Brook"

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

See the Dynamic declaration modifier section of the release notes for more information.


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

The dynamic keyword enables KVO, proxying, and other advanced Cocoa features to work reliably with Swift declarations.

这篇关于Swift绑定无法使用Xcode 6 Beta 5的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆