获取已删除实体的关系。 (碰撞)
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
循环的范围内定义变量而不使用它们。 - 但你解释说这只是一个节选。
请注意,该行为是 未定义,因此 保证 不会崩溃。不用担心以前为什么会起作用。
在应用程序启动时,我在后台线程中删除旧的 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
循环的范围内定义变量而不使用它们。 - 但你解释说这只是一个节选。
请注意,该行为是 未定义,因此 保证 不会崩溃。不用担心以前为什么会起作用。