2017-09-04 54 views
0

我想在Swift應用程序中的Realm數據庫中修改模型數據。這裏是我的代碼:使用地圖快速修改領域值

try! realm.write { 


     realm.objects(CompanyModel.self).map({ (model) in 
      model.isSelected = true 
     }) 
    } 

想法很簡單,遍歷模型並將isSelected布爾屬性更改爲true。但看起來不行。爲什麼?

+1

爲什麼它「看起來不起作用」?你有什麼錯誤嗎? – Scriptable

+0

@Scriptable我檢查過數據庫。 –

回答

1

如果您想要修改原始Results實例並因此修改存儲在您領域中的模型對象,則不應使用map。 'map'不是一個變異函數,它遍歷數組(或者在這種情況下,Results),對該序列的每個元素應用一個變換,然後返回一個包含變換結果的新序列。

實際上需要的是forEach函數,它只遍歷Array的元素,併爲每個元素執行閉包,但不返回網絡Array。我目前無法測試,但我既然forEachArray和不NSFastEnumeration一個成員函數,從中Results繼承,我認爲你不能在一個Results實例使用forEach,所以你需要使用正則for循環做這個。

try! realm.write { 
    for model in realm.objects(CompanyModel.self) { 
     model.isSelected = true 
    } 
} 
+0

Pasztor謝謝,我只是想知道如果我可以使用.map .filter和類似的功能來修改現有的對象。 –

+0

很高興我能幫到你。你不能,因爲'map'和'filter'都不是變異函數。他們都返回一個新的收集與結果。 –

+0

Pazstor我結束了類似的東西myArr = myArr.map {..}。filter {..} –