iOS核心数据-获取一个实体对象是否会自动从关系实体获取所有对象?

iOS核心数据-获取一个实体对象是否会自动从关系实体获取所有对象?,ios,performance,core-data,nsfetchrequest,Ios,Performance,Core Data,Nsfetchrequest,我有实体城市 我还有其他实体:银行分行,公证行等。这些实体与城市实体是多对一关系。此外,城市实体与这些实体有一对多关系 所以,若我只获取城市实体的城市名称,那个么这些实体对象也会被获取吗?我对获取性能提出警告,因为有时我只想获取城市名称,而不想接触所有其他相关对象。不,核心数据使用一种称为“故障”的机制来减少内存使用量。下面介绍了它的工作原理:如果您只搜索城市名称,我建议您使用NSFetchRequest实例的setPropertiesToFetch:method更有效地进行提取。您将指定一个表

我有实体城市

我还有其他实体:银行分行公证行等。这些实体与城市实体是多对一关系。此外,城市实体与这些实体有一对多关系


所以,若我只获取城市实体的城市名称,那个么这些实体对象也会被获取吗?我对获取性能提出警告,因为有时我只想获取城市名称,而不想接触所有其他相关对象。

不,核心数据使用一种称为“故障”的机制来减少内存使用量。下面介绍了它的工作原理:

如果您只搜索城市名称,我建议您使用NSFetchRequest实例的setPropertiesToFetch:method更有效地进行提取。您将指定一个表示名称的NSPropertyDescription。下面是它的工作原理:

NSFetchRequest *fetchRequest=[[NSFetchRequest alloc] init];
NSEntityDescription *entity=[NSEntityDescription entityForName:@"YourEntity" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
[fetchRequest setResultType:NSDictionaryResultType];
NSDictionary *properties=[entity propertiesByName];
[fetchRequest setPropertiesToFetch:[NSArray arrayWithObject:[properties valueForKey:@"yourPropertyName"]]];

使用此获取请求,您将为每个获取的对象获取一个字典,并且您获得的唯一属性是您获取的属性。此方法的唯一缺点是无法在完全持久跟踪模式下使用NSFetchedResultsController。基本上,使用此选项无法从NSFetchedResultsController获得跟踪模式

也就是说,如果我获取city.bankBranchs,只有在这种情况下,核心数据才会获取所有bankBranchs并将其存储在内存中?!这就是它通常的工作原理。您可以在调试器中通过在引用其关系之前和之后键入“po city”来测试它。首先,它应该显示故障信息,然后显示实际对象。