我们在初始化时将相当多的项目导入到我们的 Realm 数据库客户端。我们正试图找出它在某些客户端机器上崩溃的原因,但我们不确定“捕获”此错误以记录它的正确方法。我读过写错误不是为了被捕获。这是一些简化的代码
RLMRealm *realm = [RLMRealm defaultRealm];
[realm beginWriteTransaction];
for(NSDictionary* package in packages)
{
CMPackage *realm_package = [my_type createOrUpdateInDefaultRealmWithValue:package];
}
[realm commitWriteTransaction];
当调用 createOrUpdateInDefaultRealmWithValue 时发生崩溃,但仅在某些客户端上发生。我们认为它可能只是一个在更新之间徘徊的旧文件,但我们无法弄清楚它,因为我们无法捕获它。在中心语句周围放置 try/catch 是否安全?当其中一个写入出错时提交写入事务是否安全?这个问题有好的解决办法吗?
编辑:
我还应该指出,我们希望在一个事务中完成所有操作,并且能够在一次写入失败后继续处理事务,因为如果在单独的转换中完成写入,速度会受到负面影响。
最佳答案
根据上述与 Realm 工程师的对话,似乎不支持测试和验证事务中的单个插入,并且只能在每个事务的基础上捕获错误。我假设,因为这是一个事务,如果发生异常,这将回滚所有其他插入。
关于ios - 使用 Objective-C 在 Realm 中捕获写入错误的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40879454/