将已删除的对象添加回领域失败 swift
Adding a deleted object back to realm fails swift
我向领域添加了一个对象并且能够删除该对象,但是如果我尝试再次读取该对象,我会收到此错误
Terminating app due to uncaught exception 'RLMException', reason:
'Attempting to create an object of type 'PropertyImage' with an
existing primary key value '3'.
key 3 的项目被删除,当我查看 realmDB 时,key 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!)
如果你的创建很乱,那么这样做可以避免插入相同的主键
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
是模型中的主要值
我向领域添加了一个对象并且能够删除该对象,但是如果我尝试再次读取该对象,我会收到此错误
Terminating app due to uncaught exception 'RLMException', reason: 'Attempting to create an object of type 'PropertyImage' with an existing primary key value '3'.
key 3 的项目被删除,当我查看 realmDB 时,key 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!)
如果你的创建很乱,那么这样做可以避免插入相同的主键
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
是模型中的主要值