我想在Swift應用程序中的Realm數據庫中修改模型數據。這裏是我的代碼:使用地圖快速修改領域值
try! realm.write {
realm.objects(CompanyModel.self).map({ (model) in
model.isSelected = true
})
}
想法很簡單,遍歷模型並將isSelected布爾屬性更改爲true。但看起來不行。爲什麼?
我想在Swift應用程序中的Realm數據庫中修改模型數據。這裏是我的代碼:使用地圖快速修改領域值
try! realm.write {
realm.objects(CompanyModel.self).map({ (model) in
model.isSelected = true
})
}
想法很簡單,遍歷模型並將isSelected布爾屬性更改爲true。但看起來不行。爲什麼?
如果您想要修改原始Results
實例並因此修改存儲在您領域中的模型對象,則不應使用map
。 'map'不是一個變異函數,它遍歷數組(或者在這種情況下,Results
),對該序列的每個元素應用一個變換,然後返回一個包含變換結果的新序列。
實際上需要的是forEach
函數,它只遍歷Array
的元素,併爲每個元素執行閉包,但不返回網絡Array
。我目前無法測試,但我既然forEach
是Array
和不NSFastEnumeration
一個成員函數,從中Results
繼承,我認爲你不能在一個Results
實例使用forEach
,所以你需要使用正則for循環做這個。
try! realm.write {
for model in realm.objects(CompanyModel.self) {
model.isSelected = true
}
}
Pasztor謝謝,我只是想知道如果我可以使用.map .filter和類似的功能來修改現有的對象。 –
很高興我能幫到你。你不能,因爲'map'和'filter'都不是變異函數。他們都返回一個新的收集與結果。 –
Pazstor我結束了類似的東西myArr = myArr.map {..}。filter {..} –
爲什麼它「看起來不起作用」?你有什麼錯誤嗎? – Scriptable
@Scriptable我檢查過數據庫。 –