Я смотрю на мой рабочий проект macOS, в котором есть два NSTableView в Master-Detail.
- .xib имеет два контроллера массива, один для сущностей master и detail.Давайте назовем их MasterAC и DetailAC.Столбцы таблицы Master и Detail связаны с этими контроллерами массива.
- В привязках для DetailAC привязка Content Array связана с:
MasterAC.selection.details
, где details
- этоимя отношения мастер-деталь. - В привязках для MasterAC и DetailAC привязка Контекст управляемого объекта в обоих привязана к одному и тому же контексту управляемого объекта.
- В контроллерах массива только эти две привязки ( Content Array и Контекст управляемых объектов ) связаны.
Если это не поможет, я могу еще немного покопаться.Привязки какао с основными данными в macOS прекрасны, как только вы их заработаете:))
Приложение.Если у вас есть упорядоченный набор
Если отношение мастер-деталь-ко-многим является неупорядоченным набором, и вы используете метод старой школы для определения атрибута index
в вашей сущности DetailВы можете определить атрибут detailsOrdered
в своем мастер-классе следующим образом:
func detailsOrdered() -> [Any]? {
return details().arraySorted(byKeyPath: "index")
}
, а затем привязать к MasterAC.selection.detailsOrdered
вместо MasterAC.selection.details
.
Для реализации вышеупомянутого требуется следующеерасширение набора:
extension Set<AnyHashable> {
func arraySorted(byKeyPath keyPath: String?) -> [Any]? {
let unorderedArray = Array(self)
let sortDescriptor = NSSortDescriptor(key: keyPath, ascending: true)
let orderedArray = (unorderedArray as NSArray).sortedArray(using: [sortDescriptor])
return orderedArray
}
}