如何从print结构中删除[](swift4)

时间:2017-10-10 01:18:02

标签: ios struct printing label swift4

下面的我的代码打印了一个结构,它是我希望它对[]的期望。我只想删除它。我在下面的照片中圈出了文字。我觉得这与[人]有关。

      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)"
  }}

enter image description here

1 个答案:

答案 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为您提供了分隔符。