обновить / изменить значение массива (swift)
Модель Данных
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
}
}
Посмотреть Контроллер
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++
})
}
из этого кода, скажем, у меня есть 5 данные:
- 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)
как изменить / обновить img3 в croppedImage значение?
1 ответов
self.datas[2] = dataImage(userId: "img6", value: 1.0, photo: images, croppedPhoto: images)
это заменит 3-й объект в массиве с новым.
или
self.datas[2].value = 2.0
это изменит значение объекта dataImage с помощью userId
"img3".
это ответ на твой вопрос?
Если вам нужно найти определенное значение в userId, то вам намного лучше использовать словарь (связанный массив), а не (индексированный) массив.
var datas = [String, dataImage]()
...
self.datas["img\(counter+1)"] = ...
и вы получаете доступ к нему таким же образом.
self.datas["img3"].value = 2.0
и, пожалуйста, переименуйте класс imageData в ImageData. Имена классов начинаются с прописной буквы.