我有一个模型,其中包含一个MyGroup
.
fileprivate let groups: List<MyGroup>
MyGroup
继承自 Realm 的Object
. 它有一个计算属性percentage
和一个oldPercentage
用于存储最后一个计算属性的属性。我不想将其保存到数据库中,所以我忽略它。
class MyGroup: Object {
override static func ignoredProperties() -> [String] {
return ["oldPercentage"]
}
dynamic var oldPercentage: Double = 0
var percentage: Double {
//does some basic calculations
}
dynamic var name: String = ""
}
问题出在下面的代码片段中。
do {
let group = groups[indexPath.row]
//group.percentage = 0.5, group.name = "Hi"
try realm.write {
group.oldPercentage = group.percentage
print(group.oldPercentage) //prints 0.5
print(groups[indexPath.row].oldPercentage) //prints 0.0
groups[indexPath.row].oldPercentage = group.percentage
print(groups[indexPath.row].oldPercentage) //prints 0.0
groups[indexPath.row] = group
print(groups[indexPath.row].oldPercentage) //prints 0.0
group.name = "Test"
print(groups[indexPath.row].name) //prints "Test"
}
catch { ... }
我基本上想获取group
,更改oldPercentage
属性并将其传递回我的UICollectionView
.
我得到的group
是由indexPath
. 这工作正常,给了我正确的group
. 然后,我想更改 to 的oldPercentage
值percentage
。当我对局部变量执行此操作时group
,它会正确更改其值。但是,groups
列表中的对象不会更新。
我还尝试在oldPercentage
不创建局部变量的情况下更改组的值。我没想到会出现与上面代码不同的行为,但事实并非如此。
我最后一次尝试是将group
成功打印正确的对象分配oldPercentage
给indexPath
. 它也没有工作。
使用name
保存在数据库中的属性时,对象会按预期运行,并且值会正确更新。
我该怎么做才能更新我group
的List
?