更新/更改数组值(快速)

Posted

技术标签:

【中文标题】更新/更改数组值(快速)【英文标题】:update/change array value (swift) 【发布时间】:2016-04-26 05:26:35 【问题描述】:

数据模型

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

【问题讨论】:

伙计,请清楚你的问题。你能解释一下“照片中的资产”吗 等我更新一下,谢谢 这能回答你的问题吗? Find an item and change value in custom object array - Swift 【参考方案1】:
self.datas[2] = dataImage(userId: "img6", value: 1.0, photo: images, croppedPhoto:  images)

这会将数组中的第三个对象替换为一个新对象。

self.datas[2].value = 2.0

这将改变带有userId“img3”的dataImage对象的值。

这是否回答了您的问题?

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

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

您以同样的方式访问它。

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

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

【讨论】:

如果我不知道数组编号怎么办?我可以根据 userId 更改它吗? (img3) 是的。您可以遍历数组并在 userId 与您正在查找的相同的位置停止,或者您使用字典而不是数组并直接访问对象。看我的回答。都在里面。 嗨@HermannKlecker 谢谢你的回答,我还有另一个与此页面相关的问题。随意看***.com/questions/34915370/… 使用 for 遍历长列表效率非常低。我会使用 hasmap “如何保存”是什么意思?您可以像保存任何其他数组一样保存它。而如何保存它在很大程度上取决于你的持久化存储。

以上是关于更新/更改数组值(快速)的主要内容,如果未能解决你的问题,请参考以下文章

与更改数组值同步更新 UIView

尽管通过赋值更改了数组,但 Vue.js 列表没有更新

sql在update更新时如何快速且大批量的更新数据

sql在update更新时如何快速且大批量的更新数据(C#中写的)

如何在对象数组中查找和更新值?

React Js使用onChange将数组内的值更新到子组件