init не принимает значение int (swift4)

Мой код не работает, чтобы принять значение int в Person.init(имя: a.text!, телефон: c.text!), Где c.text! является. Как я могу это исправить.

    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.init(name: a.text ?? "", phone: Int(c.text ?? "") ?? 0)

Struct ожидает Int, а не String. Это должно помочь. Используйте оператор слияния ноль, чтобы безопасно развернуть дополнительные

Но вышеупомянутый init не имеет никакого эффекта, так как создан Person Экземпляр никак не используется. По некоторым таинственным причинам, если вы действительно хотите игнорировать созданный объект Person, используйте

let _ = Person.init(name: a.text ?? "", phone: Int(c.text ?? "") ?? 0)
Другие вопросы по тегам