J'essaie de mettre à jour un TextView chaque fois qu'un objet est ajouté à un tableau et afficher ce texte dans TextView comme ceci:
struct ObjectData { let name: String let type: String let code: Int } var updatedObjectArray = [ObjectData]() { didSet { self.updateObjectData(object: self.updatedObjectArray) } func updateObjectData(object: [ObjectData]) { for objectData in object { self.ObjectTextView.text = objectData.name } }
4 Réponses :
Vous pouvez simplement le faire comme ça:
Cela crée une pause de ligne supplémentaire à la fin de la chaîne. (pourrait ou pourrait ne pas être un problème pour l'OP)
Ouais, il peut vérifier le dernier index ou utiliser la "carte" avec l'opérateur "joint"
Dans votre boucle pour la boucle, vous définissez le texte sur une nouvelle valeur sur chaque itération, supprimant ainsi les changements de votre dernière itération. Vous pouvez ajouter vos noms à une nouvelle chaîne, puis définir le texte à la fin de la boucle de la touche pour la chariot de forme: ou une manière plus rapide sans la fin de la ligne de fin en mappant ObjectData à son nom et rejoindre avec une nouvelle ligne: p>
Vous affectez nom code> Propriété d'objets dans la boucle. Vous avez besoin de propriétés concesses dans la variable unique et attribuez un texte entier.
func updateObjectData(objects: [ObjectData]) {
let text = objects.map { $0.name }.joined(separator: "\n")
ObjectTextView.text = text
}
à un coup d'œil rapide, vous remplacez le TextView.text à chaque fois que cette boucle est exécutée:
self.ObjectTextView.text = object.map{$0.name}.joined(separator: "\n")