actualizar / cambiar el valor de la matriz (rápido)

Modelo de datos

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

Controlador de vista

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

a partir de ese código, digamos que tengo 5 datos:

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

¿Cómo cambiar / actualizar el valor croppedImage de img3 ?

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

Esto replaceá el tercer object en la matriz por uno nuevo.

o

 self.datas[2].value = 2.0 

Esto cambiará el valor del object userId con userId "img3".

¿Esto responde a tu pregunta?

Si necesita search un valor específico en userId, entonces es mucho mejor con un dictionary (matriz asociada) en lugar de una matriz (indexada).

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

Y accedes de la misma manera.

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

Y cambie el nombre de la class imageData a ImageData. Los nombres de las classs comienzan con mayúsculas.