我对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>()
}
答案 0 :(得分:0)
这不是Realm
问题,而是一般的Swift问题。您不能声明实例属性并为其指定一个值,在该值中您引用另一个实例属性的值,因为实例属性仅保证在初始化程序的末尾具有值,但是当您声明实例属性时默认值,在初始化程序之前调用,因此不能保证其他属性已经有值。
如果您需要name
成为持久的Realm属性,那么您将无法使用其他实例属性获取默认值,但是,如果您不需要保留name
中的Realm
,您只需将name
变为lazy
变量即可,因此您将能够访问其他实例属性。
lazy var name = (path as NSString).lastPathComponent