按字母顺序排序结构(swift4)

时间:2017-10-14 23:19:12

标签: swift sorting struct

我的代码现在将条目附加到结构中。如果按下按钮,则会将条目添加到标签并对标签进行排序。按下按钮 - >进入结构 - > struct打印并在标签上排序。我希望结构中的每个条目都能以编程方式进行排序,就像我通过影响标签的操作按钮一样。

import UIKit

class ViewController: UIViewController {
    @IBOutlet var a: UITextField!
    @IBOutlet var label: UILabel!

    var contacts = [Person]()

    @IBAction func save(_ sender: Any) {
        contacts.append(Person(name: a.text!))
        let sortedContacts = contacts.sorted {
            ($0.name < $1.name)
        }
        label.text = contacts.count == 0 ? "" : sortedContacts.map { $0.description }.joined(separator: "\n")

    }

    struct Person {
        var name: String

        var description: String {
            return   "\(name)"
        }
    }
}

2 个答案:

答案 0 :(得分:0)

您可以按如下方式对myStruct进行排序:

Person.myStruct.sorted { $0 < $1 }

答案 1 :(得分:0)

如果您的目标是对Person个对象进行排序,请对contacts进行排序:

@IBAction func save(_ sender: Any) {
    contacts.append(Person(name: a.text!))
    contacts.sort { $0.name < $1.name }
    label.text = contacts.map { $0.description }.joined(separator: "\n")
}

正如评论中所述,您应该更新Person结构:

struct Person: CustomStringConvertible {
    let name: String

    var description: String {
        return name
    }
}