创建一个名称结构。一个名字有两个部分,一个名字(也叫名字或个人名字)和一个姓氏(家族或姓氏)。名称结构应该实现可比较的协议。
我尝试使用以下代码,但我不知道如何在比较中包括givenName、personalName、familyName和surName
struct Name : Comparable {
let firstName : String
let lastName: String
init(firstName : String, lastName:String) {
self.firstName = firstName
self.lastName=lastName
}
}func < (lhs: Name, rhs: Name) -> Bool {
return lhs.firstName < rhs.firstName && lhs.lastName < rhs.lastName
}func == (lhs: Name, rhs: Name) -> Bool {
return lhs.firstName == rhs.firstName && lhs.lastName == rhs.lastName
}
let firstName = Name(firstName: "Paul", lastName: "Smith")
let givenName = Name(firstName: "Paul" , lastName: "Smithe")
let personalName = Name(firstName: "Paul", lastName: "Smith")
print (firstName == givenName) 发布于 2016-09-18 17:21:02
在美国,默认情况是先按lastName排序,其次按firstName排序。如果你的国家不一样的话,你可以改变这一点:
struct Name: Comparable {
var firstName: String
var lastName: String
static func == (lhs: Name, rhs: Name) -> Bool {
return (lhs.firstName == rhs.firstName) && (lhs.lastName == rhs.lastName)
}
// Provide the ordering for 2 names by comparing lastName first, for example:
// Jane Austen < Alan Smith
// Alan Smith < John Smith
static func < (lhs: Name, rhs:Name) -> Bool {
if lhs.lastName != rhs.lastName {
return lhs.lastName < rhs.lastName
} else if lhs.firstName != rhs.firstName {
return lhs.firstName < rhs.firstName
} else {
return false
}
}
}发布于 2017-07-06 06:43:20
class ViewController: UIViewController, myprotocol{
@IBOutlet weak var lbl1: UILabel!
@IBOutlet weak var text1: UITextField!
func testfirst(info:String) {
lbl1.text = info as String
}
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func btnshow(_ sender: UIButton)
{
let storyBoard = UIStoryboard(name: "Main", bundle: nil)
let svc = storyBoard.instantiateViewController(withIdentifier: "secondViewController") as! secondViewController
svc.delegate = self
svc.str = text1.text!
self.navigationController?.pushViewController(svc, animated: true)
}2)
protocol myprotocol {
func testfirst(info:String)
}3)
class secondViewController: UIViewController {
var delegate : myprotocol?
@IBOutlet weak var lbl2: UILabel!
@IBOutlet weak var txt2: UITextField!
var str = String()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
lbl2.text = str
}
@IBAction func btn2(_ sender: UIButton)
{
if (delegate != nil)
{
let information:String = lbl2.text!+txt2.text!
delegate?.testfirst(info: information)
self.navigationController?.popViewController(animated: true)
}
}https://stackoverflow.com/questions/39560392
复制相似问题