2017-10-10 7 views
0

Ma structure est maintenant imprimée dans l'ordre entré. Ce que je voudrais, c'est d'imprimer la partie de la corde dans l'ordre alphabétique.Sort struct imprimé sur l'étiquette par ordre alphabétique

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)" 
}} 

Répondre

1

Vous devez utiliser sorted avec une fermeture qui commande la propriété name de la struct Person.

let sortedContacts = contacts.sorted { $0.name < $1.name } 
+0

Comment pourrais-je trier mes struct par ordre alphabétique et decending int ordre ainsi. a, 1; a: 4 ,: a, 6. J'ai essayé {$ 0.name <$ 1.name && $ 1.phone> $ 0.phone} mais cela ne fonctionne pas. –

0

Vous pouvez utiliser comme ceci:

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