关于commitWriteTransaction的Realm.io RLMException-索引超出范围

Smileham

我一直在成功使用以下代码,突然之间,对于我的一个模型,Realm在上抛出了索引超出范围错误commitWriteTransactionRealm对象已成功创建,并且仅在下面的最后一行显示错误,并且仅在我的一个模型中发生。我最近确实更新了服务器的退货,但是由于该模型成功地从服务器数据创建了一个对象(如下所示的模型),因此该模型仍然显示正确。

顺便说一句,我需要在每次崩溃时删除并重新安装该应用程序。如果我尝试再次打开它,它将在到达任何地方之前崩溃(我认为那是因为数据库被弄乱了)。

这是怎么回事?以及我该如何解决?

代码:

NSDictionary *responseDictionary = (NSDictionary *)responseObject; //response from AFNetworking call to my server
RLMRealm *realm = [RLMRealm defaultRealm];
[realm beginWriteTransaction];
for (NSDictionary *dict in responseDictionary){
    MyModel *object = [[class alloc] initMyModelWithDictionary:dict]; //class is known
    // (print object) - see output below
    [realm addOrUpdateObject:object];
}
[realm commitWriteTransaction]; // Error thrown here

模型输出示例(来自的示例之一dict

MyModel {
    id = 32;
    created_at = 2016-07-02 03:39:15 +0000;
    updated_at = 2016-07-02 03:39:15 +0000;
    intA = 1;
    intB = 2;
    intC = 0;
    boolA = 1;
    boolB = 1;
    boolC = 1;
    boolD = 0;
}

错误:

Terminating app due to uncaught exception 'RLMException', 
reason: 'Index 0 is out of bounds (must be less than 0)'
贾登格勒

仅当,或具有越界访问权限RLMArray才会引发此异常鉴于索引0超出范围,访问第0个索引时必须为空。调用时,Realm本身并不访问此集合而是向正在执行越界访问的代码传递通知。通过打开异常断点,您应该能够轻松找出发生这种情况的位置。RLMLinkingObjectsRLMResultscommitWriteTransaction

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章