我的结构按照现在添加的时间顺序打印。我想做的是按字母顺序打印字符串部分。
import UIKit
class ViewController: UIViewController {
@IBOutlet var c: UITextField!
@IBOutlet var a: UITextField!
@IBOutlet var label: UILabel!
var contacts = [Person]()
@IBAction func press(_ sender: Any) {
contacts.append(Person(name: a.text!, phone: Int(c.text!)!))
label.text = contacts.count == 0 ? "No people to contact" : contacts.map { $0.description }.joined(separator: "\n")
}
}
struct Person {
var name: String
var phone: Int
}
extension Person: CustomStringConvertible {
var description: String {
return "\(name),\(phone)"
}
}
答案 0 :(得分:1)
您应该使用sorted
一个用于命令name
结构的Person
属性的闭包。
let sortedContacts = contacts.sorted { $0.name < $1.name }
答案 1 :(得分:0)
您可以这样使用:
(contacts.sorted {$0.description < $1.description}).map {$0.description}.joined(separator: "\n")