默认情况下SwiftRealm可选值

时间:2018-04-01 20:41:06

标签: swift macos realm

我对Realm很新,但我想知道是否有办法将可选值的默认值设置为另一个变量。我知道这听起来很混乱,但我希望我的代码能够解释它。我的目标是创建具有多个类别的目录。如果用户未输入该类别的自定义,则默认为最后一个路径组件(文件夹名称)。有没有人对如何做到这一点有任何想法?我在考虑做@objc dynamic var name: String = (path as NSString).lastPathComponent,但它无效。任何帮助表示赞赏。谢谢!

    class Category: Object {
    let name = (LinkingObjects(fromType: Category.self, property: "path") as NSString).lastPathComponent
    @objc dynamic var path = ""
    @objc dynamic var directory: Directory?
}


class Directory: Object {
    @objc dynamic var name = ""
    @objc dynamic var path = ""
    let categories = List<Category>()
}

1 个答案:

答案 0 :(得分:0)

这不是Realm问题,而是一般的Swift问题。您不能声明实例属性并为其指定一个值,在该值中您引用另一个实例属性的值,因为实例属性仅保证在初始化程序的末尾具有值,但是当您声明实例属性时默认值,在初始化程序之前调用,因此不能保证其他属性已经有值。

如果您需要name成为持久的Realm属性,那么您将无法使用其他实例属性获取默认值,但是,如果您不需要保留name中的Realm,您只需将name变为lazy变量即可,因此您将能够访问其他实例属性。

lazy var name = (path as NSString).lastPathComponent