Алфавитное секвенирование в TableView iOS Swift 4 - PullRequest
0 голосов
/ 02 июня 2018

Исходные данные находятся в формате 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
........
........

При отображении данных на tableviewController, как показано ниже, данные упорядочены по исходной последовательности данных в JSON.Это последовательность по ключу «ID».Но на Swift 4, как отсортировать его по последовательности AlphaBetic, ссылаясь на ключ «article.name_EN» (на английском языке)?

// MARK: - Table view data source

    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

        if(searchActive){   article = filtered[indexPath.row]   }
        else{   article = articles[indexPath.row]       }

        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 голосов
/ 02 июня 2018

Вам необходимо отсортировать ваш объект массива по имени свойства.

articles.sorted(by: { $0.name_EN > $1.name_EN })

Для Asc:

articles.sorted(by: { $0.name_EN < $1.name_EN })

У вас есть отфильтрованный массив и исходный массив.Примените сортировку к обоим массивам перед заполнением к tableView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...