分别对 2 个连接的数组进行排序;按字母顺序和降序排列 (swift3)

Sort 2 joined arrays separately; in alphabetical order and in descending order (swift3)

现在我的代码按字母顺序打印它的字符串数组。我想做的是以 [a,1]、[a,2]、[b,4) 之类的方式组织数组。然后按字母顺序按 int 降序排列。现在你可以在我的照片中看到下面的代码在做什么。

var yourArray = [String]()
var number = [Int]()

class ViewController: UIViewController {

    @IBOutlet var labez: UILabel!
    @IBOutlet var textA: UITextField!
    @IBOutlet var textB: UITextField!

    @IBAction func store(_ sender: Any) {
        yourArray.append((textA.text!))
        number.append(Int(textB.text!)!)



        let d = yourArray.enumerated().map { (index,string) -> String in
            guard  number.count > index else { return "" }
            return "\(string )\(" ")\(number[index]) "
        }


        let sortedArray:[String] = d.sorted { [=10=].localizedCaseInsensitiveCompare() == ComparisonResult.orderedAscending }


        labez.text = sortedArray.map { " \([=10=])" }.joined(separator:"\n")

    }

您应该从两个输入数组创建一个元组数组,而不是一个字符串数组。您可以使用 zip 执行此操作,而不是使用自定义排序函数可以轻松解决排序问题。如果字符不同,则按字母顺序排序,如果相同,则按 Int 值排序。

@IBAction func store(_ sender: Any) {
    yourArray.append((textA.text!))
    number.append(Int(textB.text!)!)
    let tuples = zip(yourArray,number)
    let sorted = tuples.sorted(by: { this, next in
        if this.0 < next.0 {
            return true
        } else if this.0 == next.0 {
            return this.1 < next.1
        } else {
            return false
        }
    })
    print(sorted)

    labez.text = sortedArray.map { " \([=10=])" }.joined(separator:"\n")
}