Назначьте ключи и значения из [(key: String, value: [[String: Any]])] в UITableView

Падение (т. е. удаление таблиц)

mysql -Nse 'show tables' DATABASE_NAME | while read table; do mysql -e "drop table $table" DATABASE_NAME; done

Усечение (т. е. пустые таблицы)

mysql -Nse 'show tables' DATABASE_NAME | while read table; do mysql -e "truncate table $table" DATABASE_NAME; done
0
задан Josh Caswell 18 January 2019 в 18:04
поделиться

1 ответ

Это очень громоздкий код.

Вам настоятельно рекомендуется использовать структуру, а не словарь, по крайней мере, с членом name

struct Person {
    let name : String
} 

Объявить и переименовать arrJsonDic (более описательно) как

[ 111]

и arrUserList как

var users = [String: [Person]]()

Для секций объявите другой массив

var letters = [String]()

Сгруппируйте массив и заполните letters просто

users = Dictionary(grouping: people, by: { String([114].name.first!) })
letters = users.keys.sorted()

В табличном представлении в numberOfSections вернуть

return letters.count

, а в numberOfRows вернуть

let letter = letters[section]
return users[letter]!.count

В cellForRowAt присвоить имя ярлык с

let letter = letters[indexPath.section]
let user = users[letter]![indexPath.row]
cell.nameLabel.text = user.name

------------------------------

Сделать он еще быстрее объявляет вторую структуру Section

struct Section {
    let index : String
    let people : [Person]
}

удаляет

var letters = [String]()

и объявляет users

var users = [Section]()

Группировка немного отличается

let grouped = Dictionary(grouping: people, by: { String([1110].name.first!) })
users = grouped.map({ Section(index: [1110].0, people: [1110].1) }).sorted{[1110].index < $1.index}

Код в трех методах делегирования табличного представления:

return users.count

-

[ 1112]

-

let user = users[indexPath.section].people[indexPath.row]
cell.nameLabel.text = user.name
0
ответ дан vadian 18 January 2019 в 18:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: