无法使用现有的主键值创建对象

万能的

我正在使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

领域-无法使用现有的主键值创建对象

RLMException尝试在检查后使用现有的主键创建对象

Django尝试使用现有的主键保存对象

尝试创建具有现有主键值“ 1”的“ Item”类型的对象

使用 jquery 将键值附加到现有的 json 对象

在现有的对象数组中插入新的键值?

使用'jq'从现有的json文件创建一个对象

如何基于键值项列表更新现有的嵌套对象属性

如何更新 Django 中现有对象的主键(使用 Postgresql)?

境界迅捷。如何使用主键链接到现有对象

从现有的MVC创建

使用javascript从现有对象创建对象

MongoDB查询以使用现有值创建键值

请参阅使用现有的Java犀牛从JavaScript对象

使用 AngularJS 或 Javascript 从现有的 json 创建新的 json

如何使用现有的 jmeter 脚本创建 jmeter 脚本

使用现有的密码哈希和盐创建HMAC

使用现有的 CosmosDB 帐户创建图形集合

使用现有的C文件在Eclipse项目中创建

如何使用现有的 json 文件创建 tmTheme 文件?

使用现有的绘图创建闪亮的下拉菜单

无法使用jsonconverter更新现有的json列表

Cygwin无法使用现有的Samba上的GIT Repos

无法在Open Xml中使用现有的段落样式

无法使用 openpyxl 覆盖现有的 Excel 工作表

PostgreSQL在插入时使现有的主键自动递增

无法使用现有 vnet 创建 aks

如何从现有的基类对象创建派生类对象?

从现有的 js 对象创建另一个不同格式的 js 对象