使用Objective-C在Realm中捕获写入错误的正确方法是什么?

时间:2016-11-30 02:54:21

标签: ios objective-c database macos realm

我们在初始化时将很多项导入到realm数据库客户端。我们试图弄清楚为什么它会在某些客户端机器上崩溃,但我们不确定正确的方法来捕获"陷阱"记录它的错误。我已经读过写错误并不是为了捕获。这是一些简化的代码

RLMRealm *realm = [RLMRealm defaultRealm];
[realm beginWriteTransaction];
for(NSDictionary* package in packages)
{
     CMPackage *realm_package = [my_type createOrUpdateInDefaultRealmWithValue:package];
}

[realm commitWriteTransaction];

当调用 createOrUpdateInDefaultRealmWithValue 时发生崩溃,但仅在某些客户端上发生。我们认为它可能只是在更新之间粘贴的旧文件,但我们无法解决它,因为我们无法捕获它。围绕中心声明放置try / catch是否安全?当其中一个写入错误时,提交写入事务是否安全?这个问题有一个很好的解决方案吗?

修改

我还应该注意,我们希望在一个事务中完成所有操作,并且能够在一次写入失败后继续执行事务,因为如果在单独的转换中完成写入,则速度会受到负面影响。

1 个答案:

答案 0 :(得分:1)

基于上述与Realm工程师的对话,似乎不支持对事务中的单个插入进行测试和验证,并且只能基于每个事务捕获错误。我认为,因为这是一个事务,如果发生异常,这将会回滚所有其他插入。