使用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中存储对象列表的方法吗?
答案 0 :(得分:10)
领域List
永远不会是nil
,而且他们不需要@objc dynamic
。它们应该只是let
,虽然我无法在文档中找到特别提到的内容,但是来自领域贡献者的comment会专门调用它
cheat sheet中的属性有documentation。
let dogs = List<Dog>()