Я новичок в Swift, я пытался сделать Indexed table view
в соответствии с этим уроком: https://www.ioscreator.com/tutorials/indexed-table-view-ios-tutorial-ios11,, но у меня есть некоторые сомнения, и я хотел бы кое-что спросить. Вот мой код:
for car in cars {
let carKey = String(car.prefix(1))
if var carValues = carsDictionary[carKey] {
carValues.append(car)
carsDictionary[carKey] = carValues
} else {
carsDictionary[carKey] = [car]
}
}
// 2
carSectionTitles = [String](carsDictionary.keys)
carSectionTitles = carSectionTitles.sorted(by: { $0 < $1 })
Прежде всего, я хочу убедиться, что эта строка
if var carValues = carsDictionary[carKey]
принимает все машины, начинающиеся со слова (carKey) из carsDictionary
, и сохраняет их в массив. Если это правда, он сохраняет следующую машину в массив и помещает ее обратно в словарь. Это правильно?
К сожалению, я не понимаю, что делает эта строка
carSectionTitles = [String](carsDictionary.keys)
Также я не уверен насчет этой функции, в основном с разделом «Настройка ячейки»
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// 3
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
// Configure the cell...
let carKey = carSectionTitles[indexPath.section]
if let carValues = carsDictionary[carKey] {
cell.textLabel?.text = carValues[indexPath.row]
}
return cell
}
Это работает как петля? Я не уверен насчет indexPath.section
. Может кто-нибудь объяснить это? Заранее спасибо.