在Realm中更新变量

时间:2017-06-03 17:28:49

标签: ios swift object realm

这是我的班级:

class realmTickets: Object {
    dynamic var TicketPrices = 0
}

class realmXP: Object {
    dynamic var XP = 0
}

class dataReference: Object {
    var dataRefVersion = 0.0
    var xpTable = List<realmXP>()
    var ticketPricesTable = List<realmTickets>()
}

如何更新dataRefVersion?

我试过了:

  currentDataReference.dataRefVersion = newestDataRef
  try! self.realm.write {
  self.realm.add(currentDataReference, update: true)
  currentDataReference.dataRefVersion = newestDataRef
 }

newestDataRef为1.0

这就是currentDataReference的制作方式:

let dataRef = self.realm.objects(dataReference)
currentDataReference = dataRef.first!

realm.objects中只有一个对象。

重新加载对象时,它始终设置为0.0

1 个答案:

答案 0 :(得分:2)

必须使用dynamic修饰符声明内置类型(字符串,整数等)的属性,以使Realm Swift能够提供从底层Realm文件中检索值的getter。如果没有dynamic修饰符,Swift编译器将生成对底层实例变量的访问,该变量不包含从Realm文件加载的对象的任何数据。

此外,您的两个List<T>属性应该真正用let声明。有关说明,请参阅Why does Realm suggest that List<T> properties be declared using "let"?