Ios 打印附加结构(swift4)
我有三个textifled,用于将数据附加到结构中。如何打印我附加的内容?现在我收到一条错误消息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
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
。电话号码不算什么。电话号码只是一个标签。