Добавление удаленного объекта обратно в область не проходит быстро - PullRequest
0 голосов
/ 19 июня 2019

Я добавил объект в область и смог удалить объект, однако, если я попытаюсь снова прочитать объект, я получу эту ошибку

Завершение работы приложения из-за необработанного исключения «RLMException», причина: 'Попытка создать объект типа' PropertyImage 'с существующее значение первичного ключа '3'.

элемент с ключом 3 был удален, и при просмотре realmDB элемент с ключом 3 не существует. как мне покончить с этим.

ниже показано, как я добавляю в свою базу данных и как я удаляю

func delete<T: Object>(_ object: T, title: String) where T: Codable {
        do {
            let predicate = NSPredicate(format: "title=%@", title)
            guard let toRemove = realm?.objects(T.self).filter(predicate) else { return}
            try realm?.write {
                realm?.delete(toRemove)
            }
        } catch {
        }
    }

    func create<T: Object>(_ objects: [T]) where T: Codable {
        do {
            try realm?.write {
                realm?.add(objects)
            }
        } catch {
            print(error.localizedDescription)
        }
    }

добавление выполняется следующим образом

var property: FeaturedProperties? RealmManager.instance.create(property)

удаление

RealmManager.instance.delete(property, title: property.title!)

1 Ответ

0 голосов
/ 19 июня 2019

Если у вас грязное создание, сделайте это, чтобы избежать вставки того же первичного ключа

do { 
    // property to be saved 
    let predicate = NSPredicate(format: "primaryProperty=%d",property.primaryProperty)
    guard let arr = realm?.objects(T.self).filter(predicate) , arr.isEmpty else { print("exists") ; return }    
    // call create here 
} catch {
      print(error)
}

, где primaryProperty является основным значением в вашей модели

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...