我在我的代码中有主键的CatalogItem
对象。 境界是在下面的代码写入工作时抛出一个错误:将现有对象追加到领域列表
class CartItem: Object {
dynamic var id: Int = 0
dynamic var item: CatalogItem!
dynamic var amount: Int = 0
convenience required init(id: Int, item: CatalogItem, amount: Int) {
self.init()
self.id = id
self.item = item
self.amount = amount
}
}
class Cart: Object {
var items = List<CartItem>()
func addItem(item: CatalogItem) {
let realm = try! Realm()
let newItem = CartItem(id: item.id, item: item, amount: 1)
do {
try realm.write {
items.append(newItem)
}
} catch let e {
handleError(e)
}
}
}
错误:
'RLMException', reason: 'Can't set primary key property 'id' to existing value '352'.'
我希望境界引用现有CatalogItem
但它看起来像它试图再添一个。 有没有办法实现这种关系? 注意:所有对象都存储在一个领域。
那么,我不创建另一个对象,我参考现有的一个。 我的意思是,'CartItem'完全没有主键。只有它引用的元素 - “CatalogItem”有一个。但是我没有在任何地方调用'CatalogItem.init()',为什么它又被创建了? – charlag
是的,你是对的,它不是一个dup,但答案是几乎相同的,你不能有两个对象具有相同的主键 – Idan
让我把这样的问题:当我创建'CartItem'并通过' CatalogItem',Realm会尝试创建另一个'CatalogItem'? – charlag