更新/更改数组值(Swift)

10

数据模型

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值?

伙计,请明确你的问题。你能解释一下“照片中的资产”是什么意思吗? - Mr. Bean
等等,我会更新的,谢谢。 - Aldo Lazuardi
这个回答解决了你的问题吗?在Swift中查找项目并更改自定义对象数组中的值 - Jeff
1个回答

14
self.datas[2] = dataImage(userId: "img6", value: 1.0, photo: images, croppedPhoto:  images)
这将用一个新对象替换数组中的第3个对象。
或者。
self.datas[2].value = 2.0

这将更改数据图像对象中userId为"img3"的值。

这个回答解决了你的问题吗?

如果你需要在userId中搜索特定值,那么使用字典(关联数组)比使用(索引)数组要好得多。

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

你可以以同样的方式访问它。

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

请将class imageData重命名为ImageData。类名应以大写字母开头。


如果我不知道数组编号怎么办?我能根据用户ID更改它吗?(img3) - Aldo Lazuardi
是的。你可以遍历数组,并在找到与你要查找的userId相同的位置停止,或者你可以使用字典而不是数组,并直接访问对象。看看我的答案,里面都有。 - Hermann Klecker
嗨 @ HermannKlecker,谢谢您的回答,我有另一个与此页面相关的问题。 请随意查看https://dev59.com/fZPfa4cB1Zd3GeqPAj1G - Aldo Lazuardi
使用for循环遍历长列表非常低效。我会使用哈希映射。 - Yaroslav Dukal
你所说的“如何保存”是什么意思?你可以像保存其他任何数组一样将其保存。而如何保存则取决于你使用的持久性存储方式。 - Hermann Klecker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接