领域更新未保存

问题描述

因此,我尝试更新Realm中Object类的List属性。对象的属性会更新,但是由于某种原因,当它到达领域时,更新永远不会发生。换句话说,我确认所做的更改是在进行更改(对象中的List更新)之后才对实际对象进行的,但是在添加到领域之后,又从该领域取回了对象,就好像什么都没有改变。这是代码

do{
   try! realm.write{
      let course = realm.objects(Course.self).filter("id =='\(courseID!)'").first
      course!.days = List<String>()
                   
      for day in daysSelected{
         course?.days.append(day)
      }
      realm.add(course!,update: .modified)

   }
}catch{
   print(error)
}

此外,您应该知道,当我更新其他属性(如字符串)时,所做的更改就可以了。我在列表上做错了吗?在我的对象类中,列表声明为:

var days: List<String> = List<String>()

解决方法

根据documentation

必须声明在对象子类上定义的列表类型的属性 顺其自然,也不是动态的。

而不是将列表定义为:

var days: List<String> = List<String>()

将其定义为:

let days = List<String>()