领域:在编写新对象时,如何避免为关系创建对象?

时间:2016-03-29 15:38:02

标签: ios swift realm

在Realm中,创建新对象的正确方法是什么,而不为其中一个关系创建新对象?

我们说我的对象PersonJob实体有一对一的关系。

我的代码首先写入10个Jobs个对象,然后使用之前创建的对象创建10个其他Person个对象。

由于Person之前不存在,update的标志为false。

realm.add(person, update: false)

但是由于Job对象已经存在,因此抛出了以下异常:

  

由于未捕获的异常终止应用' RLMException'。'无法设置   主要财产''现有价值''。'

1 个答案:

答案 0 :(得分:0)

您似乎正在尝试使用主键定义Realm对象,但您没有修改键值。

例如:

class User: Object {
  dynamic var user    = ""
  dynamic var year    = ""
  dynamic var id      = ""
  dynamic var workouts = 0

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

如果您未设置id值,则会收到以下消息:

  

由于未捕获的异常'RLMException'而终止应用。'无法将主键属性''设置为现有值''。'

有几种方法可以解决它:

  1. 请勿使用主键(not really recommended
  2. 确保在创建id
  3. 时设置Object