Управление отсортированными данными в раздел индекса и ячейку в TableViewController - PullRequest
0 голосов
/ 03 июня 2018

Как создать табличное представление, подобное списку «Контакты» iPhone?

Мои исходные данные находятся в JSON, который загружается и упаковывается в объект класса модели, называемый Article.swift.«статья» является ее элементом.

article.name = rawData["A_Name_Ch"] as! String
article.name_EN = rawData["A_Name_En"] as! String
article.location = rawData["A_Location"] as! String
article.image_URLString = rawData["A_Pic01_URL"] as? String
........
........

и данные отсортированы по article.sorted:

func downLoadLatestArticles(){
    Article.downLoadItem { (articles, error) in
        if let error = error {
            return
        }
        if let articles = articles {
            self.articles = articles.sorted(by: { $0.name_EN! < $1.name_EN! })
        }
    }
}

Мы хотели бы использовать article.name в качестве ключа для сортировки, отображая информацию статьи о просмотре таблицы по заголовку раздела(A, B, C ..), индексная таблица скользящей стороны A ~ Z и переход к следующему представлению с подробными данными при щелчке по ячейке.

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if(searchActive) {
        return filtered.count
    }
    return articles.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "ListTableCell", for: indexPath) as! ListTableCell

    var article : Article

    let imageURL: URL?
    if let imageURLString = article.image_URLString {
        imageURL = URL (string: imageURLString)
    }
    else {  imageURL = nil   }

    if let c = cell as? ListTableCell {

        c.nameLabel?.text = article.name;
        c.name_ENLabel?.text = article.name_EN;
        c.locationLabel?.text = article.location
    }
    return cell
}

1 Ответ

0 голосов
/ 03 июня 2018

После того, как ваш массив готов к использованию, вы можете использовать этот метод для сортировки элементов массива.

articles = articles.sorted { $0.name.localizedCaseInsensitiveCompare($1.name) == ComparisonResult.orderedDescending }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...