获取已删除实体的关系。 (碰撞)

Fetch relationship of deleted entity. (Crash)

在应用程序启动时,我在后台线程中删除旧的 CoreData 行,下面是我的代码。我的问题类似于城市街道问题。所以,我有两个实体,Street 和 City,我有一个关系 City <->> Street,因为一个城市有很多街道。

我在 Crashlytics 上遇到了一次罕见的崩溃,就在下面的代码中。崩溃从未发生在我身上,我无法复制它。我不确定问题是否出在我们不应该获取已删除实体的关系。有人可以给我一些解释或重现该问题的步骤吗? (我想确定是不是这个原因)

context.performBlock{
    //fetch the entities I want to delete
    let streets = fetchEntitiesToDeleteInContext(context) 

    for street in streets{
        context.deleteObject(street)

        let city: City = street.city // NO crash here
        let cityName: String = city.name //crash here but I am sure that name is not nil
    }
}

您可以在删除街道之前获取城市对象。

此外,您的代码没有任何意义。您在 for 循环的范围内定义变量而不使用它们。 - 但你解释说这只是一个节选。

请注意,该行为是 未定义,因此 保证 不会崩溃。不用担心以前为什么会起作用。