Swift Bindings не будет работать Xcode 6 Beta 5
Я делаю простую тестовую программу, используя привязки в Swift на OSX.
Имея NSTableView, NSArrayController и класс модели, я пытаюсь подключить их
вместе, но безуспешно! Компиляция сборки, но мгновенно дает эту ошибку:
Тема 1: EXC_BAD_ACCESS (код = 1, адрес = 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.
}
}
}
Я установил контроллер массива для использования моего класса "Имя" и добавил ключи "firstName" и "lastName"
Вот раскадровка:
![Storyboard]()
![Bindings1]()
![Bindings2]()
Кто-нибудь уже успел установить привязки на Xcode 6 Beta 5?
Любая помощь приветствуется!
Спасибо!
EDIT:
Как я уже сказал, я попытался добавить ключевое слово "dynamic" к свойству, чтобы включить привязки, но он дает ту же ошибку и не работает.
Я также попытался подклассифицировать класс "Имя" из NSObject, чтобы использовать старую поддержку Objective-C от Cocoa, но привязки все еще не работают!
Ответы
Ответ 1
Для бета-версии 5 требуется явно указать ваши свойства как dynamic
, чтобы работать с KVO/привязками:
dynamic var firstName = "Brook"
Дополнительную информацию см. в разделе модификатора декларации динамического выражения примечания к выпуску.
Динамическое ключевое слово позволяет использовать функции KVO, проксирования и другие расширенные функции Cocoa для надежной работы с объявлениями Swift.
Ответ 2
Вам нужно выбрать Table View Cell
и привязать его к Table Cell View
с помощью соответствующего objectValue. Я не знаю, как избавиться от восклицательного знака/предупреждения, но он работает.
![enter image description here]()
Ответ 3
Используете ли вы таблицы NSCell или NSView? Как вы настраиваете привязки, для них разные. То, что вы делаете, выглядит правильно для таблиц, основанных на NSCell.
Когда я настраивал NSTableView сегодня, это была таблица, основанная на NSView, поэтому мне пришлось выбрать TextField и привязать к "Table Cell View" с помощью Path Key Path "objectValue.name"
См. руководство по программированию таблиц для Mac: заполнение вида таблицы с помощью Cocoa документация привязок