按字母顺序排列结构体打印在标签上
问题描述:
我的结构体现在按输入顺序打印。我想要的是按字母顺序打印字符串部分。按字母顺序排列结构体打印在标签上
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)"
}}
答
您应该使用sorted
与定购Person
结构的name
属性关闭。
let sortedContacts = contacts.sorted { $0.name < $1.name }
答
你可以使用这样的:
(contacts.sorted {$0.description < $1.description}).map {$0.description}.joined(separator: "\n")
我怎么会按字母顺序和decending为了INT所以我的排序结构。 a,1; a:4,:a,6。我尝试过{$ 0.name $ 0.phone},但这不起作用。 –