我正在使用Realm Mobile Database 的第一步,我想知道是否有一种方法可以处理由于尝试添加与primaryKey
先前插入的对象相同的对象而导致的错误,从而导致以下Can't create object with existing primary key value
.
这是我的片段:
class CategoryRLM: Object {
dynamic var name: String = ""
dynamic var desc: String = ""
override static func primaryKey() -> String? {
return "name"
}
}
static func addCategory(category: CategoryRLM) -> Bool {
let realm = try! Realm()
do {
try realm.write {
realm.add(category)
}
return true
}
catch let error {
print(error)
return false
}
}
使用上一个函数:
if !CategoryRLM.addCategory(category: newCategory) {
// There was an error while adding the object
}
问题是错误没有被 do-catch 处理。
尝试使用已存在的主键添加对象被归类为程序员错误(即滥用 API),因此无法在运行时处理此错误。
在您的情况下,您应该在尝试将类别添加到 Realm 之前检查是否存在具有该主键的对象:
static func addCategory(category: CategoryRLM) -> Bool {
let realm = try! Realm()
if let existingCategory = realm.object(ofType: CategoryRLM.self, forPrimaryKey: category.name) {
return false
}
try realm.write! {
realm.add(category)
}
return true
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句