Realm错误整理

作者: 石丘 | 来源:发表于2015-06-14 16:44 被阅读5886次
    一.错误信息:Attempting to modify object outside of a write transaction - call beginWriteTransaction on an RLMRealm instance first.企图在 写入事务 外修改对象 应该先在RLMRealm实例对象前 调用beginWriteTransaction

    代码部分:
    <code>
    ManagementCamViewController *manager = [[ManagementCamViewController alloc] init];
    manager.ipcamModel = curNode.nodeData;
    //curNode.nodeData; [curNode.nodeData copy];
    [self.navigationController pushViewController:manager animated:YES];
    </code>
    当我从一个页面 push到另一个页面时 发现copy 时数据不对 改成直接赋值则没有问题
    (这个奇怪的问题 还没解决 ) 本来用的copy没问题
    然而改为直接赋值则报上面的错误。

    二.错误信息:Realm accessed from incorrect thread Realm从错误的线程存取

    解决:
    <code>
    [[RLMRealm defaultRealm] beginWriteTransaction];
    _ipcamModel.cacheImgPath = spath;
    [[RLMRealm defaultRealm] commitWriteTransaction];
    </code>
    没用通过写的单例 直接这么保存了下 突然发现这玩意 还真的挺好用

    你可能会想 诶 这么做不做阻塞线程么 OK 你可以下面这种
    <code>
    RLMRealm *realm = [RLMRealm defaultRealm];
    [realm transactionWithBlock:^{
    _ipcamModel.cacheImgPath = spath;
    }];
    </code>
    还有一次报这个错是因为 在外面套了一个GCD去掉就好了
    dispatch_barrier_async(_concurrentQueue, ^{});

    三.关于用RealmBrowser打开Realm数据库

    Realm数据库的时候是不能在模拟器运行的时候用RealmBrowser打开的,就像打开了就不能在运行模拟器中运行该程序
    这个愚蠢的错误 不会只有我自己犯过吧 :( mark

    相关文章

      网友评论

      • 2325021a3433:请教犯了第三个错后怎么补救啊,打开过后再也无法写入数据了,一直报:the realm is already in a write transaction.我重新打开realm数据库,右上角的点击加锁或者菜单栏的关闭都试过,还是不行。
      • 选一个昵称也被使用了:是第三个问题点原因吗。。。。我的程序本来没问题的,就崩了,明天去公司再看看:cold_sweat:
      • 拂晓_0ca8:'Can't create object with existing primary key value '6b4ce198-c2dc-e611-80e7-f7016de20cf5'.'我的是这个错误,是在添加数据的时候出现的,怎么解
      • 童星:关于第三点,我想说,我也遇到过,但是我重新再appstore上下载一个,就可以了,运行期间也可以打开查看,并且打开一次不需要再打开,也可以更新数据。
      • Royvonne:第三点 不是只有你 :joy:
        2325021a3433:请问你是怎么解决的啊?

      本文标题:Realm错误整理

      本文链接:https://www.haomeiwen.com/subject/dnajqttx.html