我在领域中添加了一个对象,并且能够删除objecct,但是,如果尝试再次读回该对象,则会出现此错误
具有键3的由于未捕获的异常“ RLMException”而终止应用程序,原因: '尝试创建一个类型为'PropertyImage'的对象, 现有的主键值“ 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!)
答案 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
是模型中的主要值