首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift 3可比协议

Swift 3可比协议
EN

Stack Overflow用户
提问于 2016-09-18 17:06:59
回答 2查看 1.3K关注 0票数 0

创建一个名称结构。一个名字有两个部分,一个名字(也叫名字或个人名字)和一个姓氏(家族或姓氏)。名称结构应该实现可比较的协议。

我尝试使用以下代码,但我不知道如何在比较中包括givenName、personalName、familyName和surName

代码语言:javascript
复制
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) 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-18 17:21:02

在美国,默认情况是先按lastName排序,其次按firstName排序。如果你的国家不一样的话,你可以改变这一点:

代码语言:javascript
复制
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
        }
    }
}
票数 3
EN

Stack Overflow用户

发布于 2017-07-06 06:43:20

代码语言:javascript
复制
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)

代码语言:javascript
复制
protocol myprotocol {

    func testfirst(info:String)
}

3)

代码语言:javascript
复制
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)
        }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39560392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档