【问题标题】:Realm "Collection is no longer valid" error领域“集合不再有效”错误
【发布时间】:2017-04-17 20:14:09
【问题描述】:

我有一个常见的崩溃,根据 Crashlytics 的说法是:

Fatal Exception: RLMException
Collection is no longer valid

根据 Crashlytics 的说法,错误发生在

RLMSupport.swift line 57

出现这种问题的原因可能是什么?

【问题讨论】:

  • 请分享更多您的 Realm 代码,以及发生此错误时您正在执行的操作。

标签: ios swift realm


【解决方案1】:

无效的领域集合或对象意味着支持此集合的领域通过调用 RLMRealm.invalidate() 或如果集合是 RLMArrayRLMLinkingObjects(如果其父对象已从领域中删除)显式无效。

【讨论】:

    【解决方案2】:

    如果有人遇到同样的问题,可能是因为这样的事情

    let infoModels: Results<CardGroupDisplayInfoModel> = infoStore.getAll()
    infoModels.forEach { model in
        model.assetIds.forEach { id in
            try? stubRealm.safeWrite {
                stubRealm.delete(model)
            }
        }
    }
    

    这会给你Collection is no longer valid (RLMException)

    应该是这样的

    var modelToBeDeleted: [Object] = []
    infoModels.forEach { model in
        model.assetIds.forEach { id in
            modelToBeDeleted.append(model)
        }
    }
    
    modelToBeDeleted.forEach { model in
        try? stubRealm.safeWrite {
            stubRealm.delete(model)
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-01
      • 1970-01-01
      • 2012-03-10
      • 1970-01-01
      相关资源
      最近更新 更多