将已删除的对象添加回领域失败迅速

时间:2019-06-19 12:40:40

标签: swift realm

我在领域中添加了一个对象,并且能够删除objecct,但是,如果尝试再次读回该对象,则会出现此错误

  

由于未捕获的异常“ 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 :(得分:0)

如果您的创建比较混乱,请这样做,以避免插入相同的主键

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是模型中的主要值