一.错误信息:Attempting to modify object outside of a write transaction - call beginWriteTransaction on an RLMRealm instance first.企图在 写入事务 外修改对象 应该先在RLMRealm实例对象前 调用beginWriteTransaction
代码部分:
//[[RLMRealm defaultRealm] beginWriteTransaction]; _ipcamModel.cacheImgPath = spath; [[RLMRealm defaultRealm] commitWriteTransaction];</span>
当我从一个页面 push到另一个页面时 发现copy 时数据不对 改成直接赋值则没有问题 (这个奇怪的问题 还没解决 ) 本来用的copy没问题 然而改为直接赋值则报上面的错误。
二.错误信息:Realm accessed from incorrect thread Realm从错误的线程存取
解决:
<pre name="code" class="objc">//ManagementCamViewController *manager = [[ManagementCamViewController alloc] init]; manager.ipcamModel = curNode.nodeData; //curNode.nodeData; [curNode.nodeData copy]; [self.navigationController pushViewController:manager animated:YES];</span>
没用通过写的单例 直接这么保存了下 突然发现这玩意 还真的挺好用你可能会想 诶 这么做不做阻塞线程么 OK 你可以下面这种
//RLMRealm *realm = [RLMRealm defaultRealm]; [realm transactionWithBlock:^{ _ipcamModel.cacheImgPath = spath; }];</span>
还有一次报这个错是因为 在外面套了一个GCD去掉就好了
//dispatch_barrier_async(_concurrentQueue, ^{});</span>
Realm数据库的时候是不能在模拟器运行的时候用RealmBrowser打开的,就像打开了就不能在运行模拟器中运行该程序
这个愚蠢的错误 不会只有我自己犯过吧
iOS开发者交流群:446310206