打印附加结构(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)