2017-10-10 7 views
2

Mon code ci-dessous imprime une structure comme je le souhaite pour le []. Je veux juste l'enlever. J'ai encerclé le texte dans la photo ci-dessous. Je pense que cela a quelque chose à voir avec [Person].Comment supprimer [] de la structure d'impression (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

Répondre

0

Vous imprimez un tableau de personne ... pas seulement une seule personne. Ainsi, vous obtenez les crochets:

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 

Je suppose que vous pourriez faire quelque chose comme ceci:

label.text = contacts.count == 0 ? "No people to contact" : contacts.map {$0.description}.joined(separator: "\n") 

Ce rejoindra tous les contacts en une seule chaîne avec chaque contact séparés par un saut de ligne.

De même, supprimez le saut de ligne initial dans CustomStringConvertible car le joined fournit maintenant le séparateur pour vous.

+0

Cela fonctionne mais je ne peux imprimer qu'une ligne avec. –

+0

Ok, j'ai joint les contacts pour vous. Laissez-moi savoir si cela fonctionne pour vous. (Puis vérifiez ma réponse comme votre solution!) –