Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 打印附加结构(swift4)_Ios_Swift_Struct_Printing_Append - Fatal编程技术网

Ios 打印附加结构(swift4)

Ios 打印附加结构(swift4),ios,swift,struct,printing,append,Ios,Swift,Struct,Printing,Append,我有三个textifled,用于将数据附加到结构中。如何打印我附加的内容?现在我收到一条错误消息 import UIKit class ViewController: UIViewController { @IBOutlet var c: UITextField! @IBOutlet var a: UITextField! @IBOutlet var b: UITextField! var contacts: [Person] = [] @IBActi

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

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

}}

我刚刚在打印报表中做了一个更改。当您在控制器中查看联系人阵列时,您可以自己直接使用它,并使用功能描述打印联系人的更新值。

我已经修改了您的代码,您可以使用它,它将为您提供所需的结果

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)
打印(ViewController.Person)
错误

请使用:

print(contacts.last)

您正试图打印
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
属性添加到结构中,并使结构符合
CustomStringConverable

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
来存储电话号码。

您正在尝试打印
人员的实际
结构。您想要打印一个特定实例

您可以将整个阵列打印为:

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
属性添加到结构中,并使结构符合
CustomStringConverable

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
来存储电话号码。

如果用户键入任何非数字或粘贴包含非整数的文本,应用程序将崩溃。此外,将+和0作为电话号码的前缀也很常见。OP应将其存储为字符串而不是整数。@LeoDabus也添加到您的注释中,即使电话号码只包含数字,也不应是
Int
。电话号码不算什么。电话号码只是一个标签。如果用户键入任何非数字或粘贴包含非整数的文本,应用程序将崩溃。此外,将+和0作为电话号码的前缀也很常见。OP应将其存储为字符串而不是整数。@LeoDabus也添加到您的注释中,即使电话号码只包含数字,也不应是
Int
。电话号码不算什么。电话号码只是一个标签。