2017-11-17 11 views
-3

私のコードはPerson.init(name:a.text!、phone:c.text!)のint値を受け入れるようには機能していません。です。どうしたらいいですか?initはint値を受け入れません(swift4)

import UIKit 
class ViewController: UIViewController { 
@IBOutlet var c: UITextField! 
@IBOutlet var a: UITextField! 
    @IBOutlet var label: UILabel! 
    var contacts = [Person]() 

    @IBAction func save(_ sender: Any) { 
     contacts.append(Person(name: a.text!, phone: Int(c.text!)!)) 
     contacts.sort { ($0.name, $0.phone) < ($1.name, $1.phone)} 

     label.text = String(describing: contacts) 
     Person.myStruct.append(label.text!) 
     Person.init(name: a.text!, phone: c.text!) 

    } 


    struct Person : CustomStringConvertible { 
     var name: String 
     var phone: Int 
     static var myStruct = [String](); 
     var description: String { 
      return "\(name),\(phone)" 
     }}} 
+1

タイプを作成したPersonオブジェクトを無視したい場合は、いくつかの神秘的な理由からのIntであり、あなたがstring.TryのInt(c.text)であるc.textを与え、(アンラップ力を避けています! )。 –

答えて

0
Person.init(name: a.text ?? "", phone: Int(c.text ?? "") ?? 0) 

構造体は、のIntない文字列を期待しています。これは助けになるはずです。オプションを安全にアンラップするためにnil coalescing演算子を使用する

ただし、上記のinitは、作成されたPersonインスタンスが何も使用されていないため、何の効果もありません。あなたが本当に電話のための使用

let _ = Person.init(name: a.text ?? "", phone: Int(c.text ?? "") ?? 0) 
関連する問題