打印附加结构(swift4)
我有三个textifleds,我正在使用将数据追加到一个结构。 我怎样才能打印我附加的内容? 现在我收到一条错误消息。
import UIKit class ViewController: UIViewController { @IBOutlet var c: UITextField! @IBOutlet var a: UITextField! @IBOutlet var b: UITextField! var contacts: [Person] = [] @IBAction func press(_ sender: Any) { contacts.append(Person(name: a.text!, surname: b.text! , phone: Int(c.text!)!)) print(ViewController.Person) } struct Person { var name: String var surname: String var phone: Int } }
我已经修改了你的代码,你可以使用它,它会给你你想要的结果。
import UIKit class ViewController: UIViewController { @IBOutlet var c: UITextField! @IBOutlet var a: UITextField! @IBOutlet var b: UITextField! var contacts: [Person] = [] override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } @IBAction func press(_ sender: Any) { contacts.append(Person(name: a.text!, surname: b.text! , phone: Int(c.text!)!)) print(self.contacts.description) } struct Person { var name: String var surname: String var phone: Int }}
我刚刚在打印声明中做了一个改动。 由于您的联系人数组在您查看控制器本身,所以您可以直接使用它自己和使用function描述打印联系人的更新值。
您正在尝试打印Person
的实际struct
。 你想打印一个特定的实例。
你可以打印整个数组:
print("contacts: \(contacts)")
如果你想打印一个实例,我会build议分开你的代码:
@IBAction func press(_ sender: Any) { let person = Person(name: a.text!, surname: b.text! , phone: Int(c.text!)!) print(person) contacts.append(person) }
但为了使打印有用,您应该将description
属性添加到您的结构中,并使您的结构符合CustomStringConvertible
。
struct Person: CustomStringConvertible { var name: String var surname: String var phone: Int var description: String { return "Person name: \(name), surname: \(surname), phone: \(phone)" } }
你也应该学会安全地处理可选项。 那!
操作符的意思是“如果不是零就会死机”。 如果用户在电话字段中input“Hello”,您的代码将会崩溃。
@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) } }
还要考虑一个电话号码不是一个数字值。 使用String
,而不是Int
来存储电话号码。
print(ViewController.Person)
是错误的
请用:
print(contacts.last)