2016-09-18 2 views
-1

Создайте структуру имени. Имя имеет две части - имя (также называемое заданным имя или личное имя) и фамилию (фамилию или фамилию). Структура имени должна реализовать протокол Comparable.Свифт 3 сопоставимый протокол

Я пытался с помощью следующего кода, но я не знаю, как включить GivenName, personalName, FamilyName и Фамилию в сравнении

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

Вы можете перефразировать ваш вопрос и предоставить то, что вы уже пытался. – Zico

ответ

3

В Америке по умолчанию для сортировки 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 
     } 
    } 
} 
+0

Должен ли я просто игнорировать имя_пользователя surNameName personalName и givenName, которые упоминаются в вопросе? – Hadeel

+0

Что значит? Фамилия, фамилия и фамилия - все это означает то же самое на английском языке: часть вашего имени, которое вы наследуете от своего отца. Точно так же, имя name = данное имя – Jenny

+0

Я знаю, но так как они упоминаются в вопросе, я думал о перечислении типа – Hadeel

1
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) 
     } 
    } 
Смежные вопросы