Print appended struct (swift4)

前端 未结 3 1191
孤独总比滥情好
孤独总比滥情好 2021-01-29 01:15

I have three textifleds that I am using to append data into a struct. How can I print what I appended? Right now I am getting a error message.

import UIKit

cla         


        
3条回答
  •  無奈伤痛
    2021-01-29 01:39

    You are trying to print the actual struct of Person. You want to print a specific instance.

    You can print the whole array as:

    print("contacts: \(contacts)")
    

    If you want to print the one instance, I would suggest splitting your code a little:

    @IBAction func press(_ sender: Any) {
        let person = Person(name: a.text!, surname: b.text!  , phone: Int(c.text!)!)
        print(person)
        contacts.append(person)
    }
    

    But to make the printing useful you should add the description property to your struct and make your struct conform to CustomStringConvertible.

    struct Person: CustomStringConvertible {
        var name: String
        var surname: String
        var phone: Int
    
        var description: String {
            return "Person name: \(name), surname: \(surname), phone: \(phone)"
        }
    }
    

    You should also learn to safely deal with optionals. The ! operator means "crash if not nil". Your code will crash if the user types in "Hello" into the phone field.

    @IBAction func press(_ sender: Any) {
        if let name = a.text, let surname = b.text, let phoneStr = c.text, let phone = Int(phoneStr) {
            let person = Person(name: name, surname: surname, phone: phone)
            print(person)
            contacts.append(person)
        }
    }
    

    And also consider that a phone number is not a numeric value. Use String, not Int to store phone numbers.

提交回复
热议问题