iOS Swift 4的TableView中的字母顺序排序

时间:2018-06-02 14:52:49

标签: swift

原始数据是JSON,下载并打包到名为Article.swift的Model Class中。 "物品"是它的元素。我们有

    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 :(得分:1)

您需要按属性名称对数组的对象进行排序。

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

对于Asc:

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

您同时拥有已过滤的数组和原始数组。在填充到tableView之前,在两个数组上应用排序。