如何在Swift 4中保留Realm List属性?

时间:2017-11-08 12:41:09

标签: ios realm swift4

使用Swift 4和Realm 3.0.1,我希望将Realm对象列表存储在父Realm的属性中 宾语。我遇到了以下问题:

在Swift 4中,应该保留在Realm中的属性必须是@objc dynamic,例如@objc dynamic var id: String = ""。但是,Realm的数组替换类型List无法以这种方式存储:@objc dynamic var children: List<Child>? = nil导致此编译器错误:

  

属性无法标记为@objc,因为其类型无法在Objective-C

中表示

有关更多背景信息,请参阅以下完整示例:

final class Child: Object {
  @objc dynamic var name: String = ""
}

final class Parent: Object {
  // this fails to compile
  @objc dynamic var children1: List<Child>?

  // this compiles but the children will not be persisted
  var children2: List<Child>?
}

那么还有另一种在Realm和Swift 4中存储对象列表的方法吗?

1 个答案:

答案 0 :(得分:10)

领域List永远不会是nil,而且他们不需要@objc dynamic。它们应该只是let,虽然我无法在文档中找到特别提到的内容,但是来自领域贡献者的comment会专门调用它

cheat sheet中的属性有documentation

let dogs = List<Dog>()