0
votes

Mettre à jour un texte TextView lorsqu'un objet est ajouté à un tableau sans remplacer le texte TextView de l'objet précédent

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


0 commentaires

4 Réponses :


0
votes

Vous pouvez simplement le faire comme ça: xxx


2 commentaires

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"



0
votes

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: xxx

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: xxx


0 commentaires

0
votes

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
}


0 commentaires

0
votes

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


0 commentaires