首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印附加结构(swift4)

打印附加结构(swift4)
EN

Stack Overflow用户
提问于 2017-10-06 22:31:35
回答 3查看 371关注 0票数 0

我有三个文本片段,用于将数据附加到结构中。我如何打印我附加的内容?现在我收到一条错误消息。

代码语言:javascript
复制
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
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-10-06 22:36:11

我已经修改了你的代码,你可以使用它,它会给你想要的结果。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2017-10-06 22:38:22

您正在尝试打印实际的struct of Person。要打印特定实例。

可以将整个数组打印为:

代码语言:javascript
复制
print("contacts: \(contacts)")

如果您想打印一个实例,我建议将代码拆分一点:

代码语言:javascript
复制
@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

代码语言:javascript
复制
struct Person: CustomStringConvertible {
    var name: String
    var surname: String
    var phone: Int

    var description: String {
        return "Person name: \(name), surname: \(surname), phone: \(phone)"
    }
}

你也应该学会安全地处理选项。!操作符的意思是“崩溃(如果不是零)”。如果用户在电话字段中输入"Hello“,您的代码就会崩溃。

代码语言:javascript
复制
@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来存储电话号码。

票数 2
EN

Stack Overflow用户

发布于 2017-10-06 22:36:45

print(ViewController.Person)错了

请使用:

代码语言:javascript
复制
print(contacts.last)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46614785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档