下面的我的代码打印了一个结构,它是我希望它对[]的期望。我只想删除它。我在下面的照片中圈出了文字。我觉得这与[人]有关。
var contacts = [Person]()
@IBAction func press(_ sender: Any) {
contacts.append(Person(name: a.text!, phone: Int(c.text!)!))
label.text = self.contacts.description
}}
struct Person {
var name: String
var phone: Int}
extension Person: CustomStringConvertible {
var description: String {
return "\n\(name),\(phone)"
}}
答案 0 :(得分:0)
你正在打印一个Person数组...而不仅仅是一个人。所以你得到方括号:
bash-3.2$ swift
Welcome to Apple Swift version 4.0 (swiftlang-900.0.63 clang-900.0.37). Type :help for assistance.
1> struct Person { var name: String; var phone: Int}
2> var contacts = [Person]()
contacts: [Person] = 0 values
3> contacts.append(Person(name: "john", phone: 911))
4> extension Person: CustomStringConvertible { public var description: String { return "\n\(name),\(phone)" }}
5> print(contacts)
[
john,911]
6> print(contacts[0])
john,911
我想你可以这样做:
label.text = contacts.count == 0 ? "No people to contact" : contacts.map {$0.description}.joined(separator: "\n")
这会将所有联系人合并为一个字符串,每个联系人用换行符分隔。
另外,摆脱CustomStringConvertible中的初始换行符,因为现在joined
为您提供了分隔符。