2016-01-20 82 views
6

數據模型更新/改變數組值(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個DATAS:

- 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的裁剪圖像價值?

+0

伴侶,請清楚你的問題。你能解釋「資產在照片」 –

+0

等待我會更新它,謝謝 –

回答

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

這將用新的數組替換第三個對象。

self.datas[2].value = 2.0 

這將改變數據 - 圖象對象的值與userId 「IMG3」。

這是回答您的問題嗎?

如果您需要在userId中搜索特定值,那麼使用字典(關聯數組)而不是(索引)數組會更好。

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

而且您以相同的方式訪問它。

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

請將類imageData重命名爲ImageData。類名以大寫字母開頭。

+0

如果我不知道陣列號碼?我可以改變它基於userId? (img3) –

+0

是的。您可以遍歷數組並停止userId與您正在查找的相同,或者使用字典而不是數組並直接訪問對象。看到我的答案。它都在那裏。 –

+0

嗨@HermannKlecker謝謝你的回答,我還有一個與本頁相關的問題。隨時看到它http://stackoverflow.com/questions/34915370/update-change-array-value-from-another-viewcontroller-swift –