2017-10-10 98 views
2

我的代码如下打印一个结构,我期望它的结果[]。我只是想要删除它。我在下面的照片中圈出了文字。我觉得这与[Person]有关。如何从打印结构中删除[]结构(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

回答

0

你打印的人组成的数组......不只是一个人。所以,你得到的方括号:

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

+0

这可行,但我只能打印1行。 –

+0

好的,我已经为你加入了联系人。让我知道这是否适合你。 (然后检查我的答案作为您的解决方案!) –