在应用启动时,我正在后台线程中删除旧的CoreData行,下面是我的代码。我的问题类似于City-Streets问题。所以,我有两个实体,街道和城市,我有一个关系城市< - >>街道作为一个城市有很多街道。
我在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
}
}
答案 0 :(得分:1)
您可以在删除街道之前获取城市对象。
此外,您的代码没有任何意义。您正在for
循环的范围内定义变量而不使用它们。 - 但你解释说这只是一段摘录。
请注意,行为是未定义,因此保证不会崩溃。无需担心之前的原因。