У меня есть NSViewController
, управляющий NSTableView
, и я заметил, что NSViewController
имеет свойство representedObject
, однако это не IBOutlet, и я не могу привязать dataSource
из NSTableView
к свойству representedObject
NSViewController
в построителе интерфейса. Как предполагается использовать свойство createdObject? Есть ли примеры правильного использования?
Правильное использование NSViewController providedObject
Ответы (2)
Свойство representedObject
должно быть установлено для объекта, который находится за пределами пера, такого как документ, другой контроллер модели или объект модели. Вещи в пере должны получать данные от ВК или representedObject
ВК.
Я знаю, что это старая тема, но я подумал, что добавлю к ней, так как я провел довольно много исследований по репрезентируемому объекту. Надеюсь это поможет!
representedObject
- это ссылка на некоторые AnyObject
(NSObject
), которые должно представлять представление.
Это НЕ копия объекта, а ссылка на него (как в Swift, так и в Objective-C)
В идеале, если рассматриваемое представление - это страница из "приложения контактов". Эта страница represents a contact
, а затем представленный объект должен быть установлен в fooContact
объектом, создавшим его. fooContact
является ссылкой на экземпляр рассматриваемого контакта.
Это не обязательно должно быть установлено классом создания экземпляра, но лично я считаю, что это более чистый подход к вещам.
Я обычно избегаю попытки переопределить методы получения / установки по умолчанию для представленного объекта и ссылаться на него другим var в классе, т.е.
weak var document: Document{
if let docRef = self.representedObject as Document {
return docRef
}
return nil
}
поддержание слабой ссылки позволит избежать ссылочных циклов.
return self.representedObject as? Document
, без if-let или guard-let.
- person Mark A. Donohoe; 16.04.2018