更新/更改数组值(swift)

Ald*_*rdi 8 arrays datamodel ios 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
   }

}
Run Code Online (Sandbox Code Playgroud)

查看控制器

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

        })
    }
Run Code Online (Sandbox Code Playgroud)

从该代码,假设我有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)
Run Code Online (Sandbox Code Playgroud)

如何更改/更新img3的croppedImage值?

Her*_*ker 13

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

这将用一个新对象替换数组中的第三个对象.

要么

self.datas[2].value = 2.0
Run Code Online (Sandbox Code Playgroud)

这将使用userId"img3" 更改dataImage对象的值.

这回答了你的问题了吗?

如果需要在userId中搜索特定值,那么使用字典(关联数组)而不是(索引)数组会更好.

var datas = [String, dataImage]()
...
self.datas["img\(counter+1)"] = ...
Run Code Online (Sandbox Code Playgroud)

你以同样的方式访问它.

self.datas["img3"].value = 2.0
Run Code Online (Sandbox Code Playgroud)

并请将类imageData重命名为ImageData.班级名称以大写字母开头.