我对核心数据有点新意,但我不认为我在这里做任何复杂的事情。我有一个持久化核心数据的对象,它与另一个对象有一个非常简单的一对一关系。我用简单的获取请求和表视图显示了我的对象的所有实例。一切都很好。
如果你坚持在桌面视图上并滚动足够长的时间,突然所有的桌子单元格都会变成空白。我已将问题跟踪到我的核心数据对象数组;数组仍然存在,持久化对象仍然存在,但我的所有属性突然设置为nil。
什么会导致这种行为?我订阅了Core Data Will和Did save方法,但它们没有被解雇。我可以使用其他任何技巧来调试此问题吗?
编辑 - 包括用于保存下面对象的方法:
- (void) persistLongActivity: (NSDictionary*) longActivityData
{
PersistedLongActivity *toPersist = [NSEntityDescription insertNewObjectForEntityForName: @"PersistedLongActivity" inManagedObjectContext: [self managedObjectContext]];
toPersist.startDate = [longActivityData valueForKey:@"startDate"];
toPersist.endDate = [longActivityData valueForKey:@"endDate"];
toPersist.type = [longActivityData valueForKey:@"type"];
[self saveContext];
}
答案 0 :(得分:0)
他们正在消失,因为A.R.C.从记忆中杀死他们。你的指针是染色的。创建更强大的参考资料。
答案 1 :(得分:-1)
所以我认为问题在于我是在后台线程上从Core Data中检索的。我试图从主线程中取出数据,所以我没有杀死用户性能,但听起来像主线程的Core Data是一个坏主意?无论哪种方式,保持主线程上的检索似乎解决了手头的问题。
如果有人可以解释为什么在后台线程中从Core Data中检索会导致这种行为,或者如果某人可以提供更好的解决方案来从Core Data中检索而不延迟主线程,我很乐意在评论中听到它。