ios - 忽略的属性和简单的 swift 属性

标签 ios swift properties realm

使用忽略的属性和只使用简单的 swift 属性在行为上有什么区别?

我需要向不应保存到数据库的 Realm 对象添加属性。 Realm 提供了“忽略的属性”,但如果我只是用普通的 swift 样式编写属性,它不应该保存到 DB。行为上有区别吗?

// Ignored propery
class Person: Object {
  dynamic var tmpID = 0

  override static func ignoredProperties() -> [String] {
    return ["tmpID"]
  }
}


// Normal swift property
class Person: Object {
      var tmpID = 0 // Realm supported class but with no dynamic
      var myClassObj = MyCustomClass() // Class realm does not support
 }

最佳答案

由于 Realm 框架中使用的是 Objective-C 运行时,因此必须将 Realm 模型中的 var 属性标记为 dynamic。如果您不将属性标记为 dynamic,它们将不会在运行时更新。

但是,ignoredProperties 是一个完全独立的东西。通过向 ignoredProperties 添加一个属性,您告诉 Realm 不要将该属性保存在数据库中。如果您不将属性标记为 dynamic 并且也不将其添加到 ignoredProperties 中,它仍将保留到 Realm,但不会按预期工作.

如果您需要在您的 Realm 模型类中存储不被持久化的属性,您必须将它们添加到 ignoredProperties

关于ios - 忽略的属性和简单的 swift 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45794016/

相关文章:

ios - 注销 Firebase 时,下一个用户登录时会保留用户的数据

python - 类方法上的条件属性装饰器

python - 根据更改标签文本到 python 变量

iphone - iOS UIPickerView 在选择栏上设置图标

ios - 如何在swift中将json对象一个一个写入json对象

ios - 减速时 UIScrollView 速度为 0

ios - 如何在 HMAC 中以 HEX Swift iOS 形式传递 key

javascript - 循环链表和更改原型(prototype)中对象属性的错误

ios - Swift 在主 UIViewController 的容器中嵌入 UIView - 如何从 1 个嵌入 UIView 转换到下一个嵌入 UIView

objective-c - 在tableview之后添加其他对象到iOS 5 Storyboard