У меня есть объект Человек со многими собаками. Приложение имеет отдельную страницу, где он показывает только собака и другую страницу, где он показывает собака от PERSONRealm - Невозможно создать объект с существующим значением первичного ключа
Моей модели выглядит следующим образом
class Person: Object {
dynamic var id = 0
let dogs= List<Dog>()
override static func primaryKey() -> String? {
return "id"
}
}
class Dog: Object {
dynamic var id = 0
dynamic var name = ""
override static func primaryKey() -> String? {
return "id"
}
}
У меня есть человек, хранящийся в Realm. У человека есть страница с деталями, где мы получаем и показываем его собак. Если собака уже существует, я обновляю последнюю информацию для этой собаки и добавляю ее в список собак человека, создавая новую собаку, сохраняя ее и добавляя в список людей. Это работает в coredata.
// Fetch and parse dogs
if let person = realm.objects(Person.self).filter("id =\(personID)").first {
for (_, dict): (String, JSON) in response {
// Create dog using the dict info,my custom init method
if let dog = Dog(dict: dict) {
try! realm.write {
// save it to realm
realm.create(Dog, value:dog, update: true)
// append dog to person
person.dogs.append(dog)
}
}
}
try! realm.write {
// save person
realm.create(Person.self, value: person, update: true)
}
}
На попытке обновить человека с его собаками, сфера бросает исключение Невозможно создать объект с существующим значением первичного ключа
Где 'recipe' значение в' person.dogs.append (рецепт) 'приходит? Не совсем понятно, что вы пытаетесь сделать здесь, извините! – TiM
Извините, это должен быть person.dogs.append (собака). Я просто создаю/обновляю собаку и добавляю ее собакам человека @TiM –
Ahh okay. Кажется, я вижу, что здесь происходит сейчас. Я добавлю ответ. :) – TiM