Я новичок в какао, и я пытался создать простое приложение для Mac, используя быстрый язык программирования, но я застрял и не могу найти решение.Настоящий словарь в нескольких NSTableviews
Я хочу представить данные из словаря в двух или более таблицах, где первая таблица будет показывать ключ, а вторая таблица будет показывать значение.
Например, у меня есть словарь
var worldDict:NSDictionary = ["Africa":["Egypt", "Togo"],"Europe": ["Austria", "Spain"]]
Я могу представить все континенты в первой таблице, но я не могу узнать, как сделать вторую таблицу для отображения стран континента я выбираю в первую Таблица.
My ViewController - это DataSource и делегат для обеих таблиц.
extension ViewController: NSTableViewDataSource {
func numberOfRowsInTableView(tableView: NSTableView) -> Int {
if tableView == continentTable {
return self.worldDict.valueForKey("Continent")!.count
} else if tableView == countryTable {
return self.worldDict.valueForKey("Continent")!.allKeys.count
}
return 0
}
func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView? {
var cell = tableView.makeViewWithIdentifier(tableColumn!.identifier, owner: self) as! NSTableCellView
if tableView == self.continentTable {
let continent: AnyObject? = wordlDict.valueForKey("Continent")
var keys = continent!.allKeys
cell.textField?.stringValue = keys[row] as! String
} else if tableView == self.countryTable {
var countriesOfContinent: AnyObject? = worldDict.valueForKey("Continent")?.valueForKey("Africa")!
cell.textField?.stringValue = countriesOfContinent?.allKeys[row] as! String
}
return cell
}
}
Здесь я представляю данные из словаря в таблицах, но отдельно, и не может понять, как заставить их работать вместе.
Кроме того, я знаю, как получить номер строки, который был выбран
extension ViewController: NSTableViewDelegate {
func tableViewSelectionDidChange(notification: NSNotification) {
let continentSelected = rowSelected()
}}
func rowSelected() -> Int? {
let selectedRow = self.continentTable.selectedRow
if selectedRow >= 0 && selectedRow < self.worldDict.valueForKey("Continent")!.count {
return selectedRow
}
return nil
}
Почему бы вам не поделиться тем, что вы сделали, чтобы получить первое представление таблицы и что вы пытались получить во втором представлении таблицы? Кроме того, опишите точно, что второе представление таблицы не работает так, как вы хотите. –
@KenThomases Я добавил выдержки из кода. – Alex
Какова связь между 'var countries' и' worldfDict'? –