web-dev-qa-db-fra.com

mettre à jour / modifier la valeur du tableau (Swift)

modèle de données

class dataImage {
    var userId: String
    var value: Double
    var photo: UIImage?
    var croppedPhoto: UIImage?

init(userId:String, value: Double, photo: UIImage?, croppedPhoto: UIImage?){
    self.userId = userId
    self.value = value
    self.photo = photo
    self.photo = croppedPhoto
   }

}

Afficher le contrôleur

var photos = [DKAsset]() //image source
var datas = [dataImage]()

var counter = 0
    for asset in photos{
        asset.fetchOriginalImageWithCompleteBlock({ image, info in // move image from photos to datas

            let images = image
            let data1 = dataImage(userId: "img\(counter+1)", value: 1.0, photo: images, croppedPhoto: images)
            self.datas += [data1]
            counter++

        })
    }

à partir de ce code, disons que j'ai 5 données:

 - dataImage(userId: "img1", value: 1.0, photo: images, croppedPhoto:
   images)
 - dataImage(userId: "img2", value: 1.0, photo: images, croppedPhoto:
   images)
 - dataImage(userId: "img3", value: 1.0, photo: images, **croppedPhoto:
   images**)
 - dataImage(userId: "img4", value: 1.0, photo: images, croppedPhoto:
   images)
 - dataImage(userId: "img5", value: 1.0, photo: images, croppedPhoto:
   images)

Comment changer/mettre à jour la valeur de img3 croppedImage?

8
Aldo Lazuardi
self.datas[2] = dataImage(userId: "img6", value: 1.0, photo: images, croppedPhoto:  images)

Cela remplacera le 3e objet du tableau par un nouveau.

ou

self.datas[2].value = 2.0

Cela changera la valeur de l'objet dataImage avec userId "img3".

Est-ce que cela répond à votre question?

Si vous devez rechercher une valeur spécifique dans userId, alors vous êtes bien mieux avec un dictionnaire (tableau associé) plutôt qu'avec un tableau (indexé).

var datas = [String, dataImage]()
...
self.datas["img\(counter+1)"] = ...

Et vous y accédez de la même manière.

self.datas["img3"].value = 2.0

Et veuillez renommer la classe imageData en ImageData. Les noms de classe commencent par des majuscules.

13
Hermann Klecker