2017-10-06 95 views
0

我有三個textifleds,我正在使用將數據追加到一個結構。我怎樣才能打印我附加的內容?現在我收到一條錯誤消息。打印附加結構(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 
    } 
} 

回答

0

我修改了你的代碼,你可以使用它,它會給你結果你想要的。

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 

}} 

我剛剛在打印語句中做了一處更改。由於您的聯繫人數組在您視圖控制器本身,因此您可以直接使用它自己並使用功能描述打印聯繫人的更新值。

+0

如果用戶鍵入任何非數字或粘貼包含非整數的文本,則應用程序將崩潰。另外,將+和0作爲前綴添加到電話號碼中是非常常見的。 OP應該將其存儲爲字符串不整數。 –

+0

@LeoDabus即使電話號碼只包含數字,也會添加到您的評論中,但它不應該是「Int」。沒有數字是通過電話號碼完成的。電話號碼只是一個標籤。 – rmaddy

0

print(ViewController.Person)是錯誤的

請使用:

print(contacts.last) 
2

你要打印的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)" 
    } 
} 

您還應該學會安全地處理optionals。 !運算符表示「如果不是零,則會崩潰」。如果用戶在電話字段中輸入「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來存儲電話號碼。