簡體   English   中英

打印附加的結構(swift4)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM