[英]Print appended struct (swift4)
我有三個用於將數據附加到結構中的文本文件。 如何打印我附加的內容? 現在,我收到一條錯誤消息。
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
}
}
您正在嘗試打印Person
的實際struct
。 您要打印特定實例。
您可以將整個數組打印為:
print("contacts: \(contacts)")
如果要打印一個實例,建議將代碼拆分一些:
@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)"
}
}
您還應該學習安全地處理可選內容。 !
運算符的意思是“如果不為零則崩潰”。 如果用戶在電話字段中輸入“ 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
來存儲電話號碼。
我已經修改了您的代碼,可以使用它給您想要的結果。
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
}}
我剛剛在打印聲明中做了一項更改。 由於您的聯系人數組位於視圖控制器本身中,因此您可以直接直接使用它,也可以使用功能描述來打印聯系人的更新值。
print(ViewController.Person)
錯誤
請用:
print(contacts.last)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.