我可以使用孩子的主键作为Realm.IO中父母的主键吗?

时间:2016-01-26 23:04:00

标签: ios swift realm

例如:

class User: Object {
  dynamic var name: String = "Thor"
  dynamic var profile: Profile?
}

class Profile: Object {
  dynamic var id: Int = 0
  override static func primaryKey() -> String {
    return "id"
  }
}

因此,我希望Realm在使用个人资料primaryKey进行更新时不会创建新用户。

在代码中,

let json = JSON(value)
let realm = try! Realm()
try! realm.write {
  let user = User(json: json)
  realm.add(user, update: true)
}

由于User没有primaryKey,因此每次都会创建一个新用户。但是,由于Profile 具有primaryKey,因此它只会创建一个配置文件。所有用户都指向同一个配置文件。我希望User使用Profile上的主键,并在创建新User时仅创建新的Profile

有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:0)

您要求User课程提供身份概念的金额,其在Realm中由primary keys表示。

我建议您使用相同的主键来表示User及其关联的Profile。或者,如果这些模型只能以一对一的关系存在,为什么不将它们组合起来?

class User: Object {
  dynamic var id: Int = 0
  dynamic var name: String = "Thor"

  override static func primaryKey() -> String {
    return "id"
  }
}

我假设您的Profile模型中有更多属性。