我在我的代碼中有主鍵的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