Строка
var cityArray = [["NYC, NY", New Hampshire"],["Buffalo, NY]]
не будет компилироваться из-за отсутствия кавычек. Я не уверен, как именно должен выглядеть ваш массив, но предполагаю, что это может быть
var cityArray = [["NYC, NY", "New Hampshire"],["Buffalo", "NY"]]
Затем вы можете использовать функцию карты, чтобы получить первый элемент, используя first и первый письмо с использованием префикса :
let filteredArray = cityArray.map({$0.first?.prefix(1)})
for firstLetter in filteredArray {
if let uFirstLetter = firstLetter {
print(uFirstLetter) // prints N B
}
}
Обновление : это минимальный рабочий пример, который даст вам N в первом заголовке и B во втором заголовке:
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var cityArray = [["NYC, NY", "New Hampshire"],["Buffalo", "NY"]]
var filteredArray: [String.SubSequence?] = []
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1 //just for simplification purpose, change it according to your needs
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
//just for simplification purpose, change it according to your needs
let cell = UITableViewCell()
return cell
}
override func viewDidLoad() {
super.viewDidLoad()
let tableView = UITableView()
tableView.delegate = self
tableView.dataSource = self
tableView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(tableView)
tableView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
tableView.heightAnchor.constraint(equalTo: view.heightAnchor).isActive = true
filteredArray = cityArray.map({$0.first?.prefix(1)})
}
func numberOfSections(in tableView: UITableView) -> Int {
return cityArray.count
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let label = UILabel()
label.backgroundColor = .lightGray
label.textColor = .red
if let uFirstLetter = filteredArray[section] {
label.text = uFirstLetter.description
return label
} else {
return nil
}
}
}