我在iOS上使用不同的视图控制器呈现NSManagedObject
层次结构(基本上是三个层次)。我不完全理解的问题是,如果每个视图控制器都需要NSFetchedResultsController
。对于根视图控制器,它看起来很方便,但是后面的视图基于上一个视图中的选择。与直接关系相比,NSFetchRequest
怎么样?显示的数据是静态的,并且不会永远改变,因此无需准备更新。它将从核心数据sqlite文件加载。
这是我所拥有的简单图形:
A (1) <---> (*) B (1) <---> (*) C
因此,A
- B
和B
- C
关系都是一对多的,在根视图中,我显示的是{{1 }}秒。选择一个A
将在下一个视图控制器中显示A
,等等。
我是使用B
(或B
)获取NSFetchRequest
的实例还是仅使用NSFetchedResultsController
中的多对多关系,是否有任何区别?内存占用或内存不足的情况有什么不同吗?我知道我总是可以在A
时将fetch控制器放在一边,但是对于托管对象我认为并不那么简单。是这样吗?我喜欢使用直接关系。
提前致谢。
答案 0 :(得分:0)
除非你为每个A拥有数千个B和C,否则你应该担心的不一样。
如果你使用这种关系,那么你会得到一个NSSet
- 这将不会使用NSFetchedResultsController
。但是,你得到的对象实际上并没有任何数据,它们都会以故障开始,因此内存占用非常小。他们只在您要求时检索他们的数据:)
如果您收到内存不足警告,可以通过从上下文重新加载来强制托管对象再次成为错误(请参阅the docs here)。