我的代碼現在將條目附加到結構中。如果按下按鈕,它將條目添加到標籤並對標籤進行分類。所以按下按鈕 - >進入結構 - >結構被打印和排序在標籤上。我希望結構中的每個條目都能以編程方式排序,就像我通過影響標籤的操作按鈕一樣。按字母順序排序struct(swift4)
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)"
}
}
}
只需更新一些代碼即可。讓您的人物屬性名稱保持不變。 description屬性可以只返回name。你忘了給Person添加一個CustomStringConvertible協議'struct Person:CustomStringConvertible'。並且不要使用'count == 0'來檢查你的數組是否爲空。使用isEmpty屬性'contacts.isEmpty?' –
Sam,我不清楚你的問題是什麼。當然,你可以像Leo和rmaddy所說的那樣邊緣調整,但是他們完成的東西非常像你所擁有的。如果您的標籤中沒有看到多行,請務必將'numberOfLines'設置爲零或大於'1'的某個值。 – Rob