按字母顺序排列结构体打印在标签上

问题描述:

我的结构体现在按输入顺序打印。我想要的是按字母顺序打印字符串部分。按字母顺序排列结构体打印在标签上

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 } 
+0

我怎么会按字母顺序和decending为了INT所以我的排序结构。 a,1; a:4,:a,6。我尝试过{$ 0.name $ 0.phone},但这不起作用。 –

你可以使用这样的:

(contacts.sorted {$0.description < $1.description}).map {$0.description}.joined(separator: "\n")