[英]How to migrate one-to-one relationship to one-to-many relationship in Realm Swift
[英]One-to-one relationship in Realm swift
如何建模对象之间的一对一关系?
例如,我有 user_infoA、user_infoB 和 user_profile 的模型。
user_profile
有
user_infoA
有
user_infoB
有
user_profile
(P) 与user_infoA
(A) 和user_infoB
(B) 都有关系。 当A被删除时,P是否也会被删除? 只有当相关的A和B被删除时,P才会被删除?
我怎样才能用领域快速建模呢?
多对一关系需要可选属性,这使我使用强制展开可选。 :(
[编辑]
class RealmMyProfile: Object {
@objc dynamic var id: Int64 = 0
@objc dynamic var profile = RealmUserProfile()
}
class RealmUserProfile: Object {
@objc dynamic var userId: Int64 = 0
@objc dynamic var name: String = ""
override static func primaryKey() -> String? {
return "userId"
}
}
异常“必须将RealmMyProfile.profile
属性标记为可选。” 发生了。 它应该是可选的。
Realm 中的一对一关系(链接)不能强制链接始终存在。 所以它们总是必须被标记为可选,因为没有办法防止 nil 被存储为文件格式的链接。
因此,我们要求在 Swift 中定义的 Realm 模型明确地将一对一关系标记为可选。
class RealmMyProfile: Object {
@objc dynamic var id: Int64 = 0
@objc dynamic var profile:RealmUserProfile?
}
class RealmUserProfile: Object {
@objc dynamic var userId: Int64 = 0
@objc dynamic var name: String = ""
override static func primaryKey() -> String? {
return "userId"
}
}
您可以执行此解决方案,这可以使您免于使用展开值
领域问题2814
dynamic var profile_:RealmUserProfile? = nil
var profile: RealmUserProfile {
get {
return profile_ ?? RealmUserProfile()
}
set {
profile_ = newValue
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.