2016-09-18 4 views
-1

이름 구조를 만듭니다. 이름은 성 (성 또는 성)과 성 (성 또는 성)의 두 부분으로 이루어져 있습니다 (이름은 이라고도 함). 이름 구조는 이 Comparable 프로토콜을 구현해야합니다.스위프트 3 비교 프로토콜

나는 다음과 같은 코드로 시도하고 있었다

하지만 난 비교하여 givenName과, personalName, familyName 및 성을 포함하는 방법을 모른다 기본 처음 lastName을 기준으로 정렬하는 것입니다 미국에서는

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

, 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

난 그냥 surName familyName personalName 및 givenName 질문에 언급 된 무시해야합니까? – Hadeel

+0

무슨 소리 야? 성, 성 및 성은 모두 영어로 동일한 것을 의미합니다. 귀하의 이름에서 아버지로부터 물려받은 부분. 마찬가지로, 이름 = 주어진 이름 – Jenny

+0

나는 그들이 질문에 언급 된 이후로, 나는 enum 타입을 생각하고 있었다. – 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) 
     } 
    }