0

我有实体City

我还有其他实体:BankBranchesNotaryBranches等。这些实体与City实体是多对一的关系。此外,城市实体与这些实体具有一对多的关系。

那么,如果我只获取 City 实体的城市名称,是否也会获取这些实体对象?我警告获取性能,因为有时我只想获取城市名称,而不是触及所有其他相关对象。

4

2 回答 2

1

不,Core Data 使用一种称为“故障”的机制来减少使用的内存量。有关于它如何工作的描述:https ://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdFaultingUniquing.html

于 2012-08-24T11:33:36.147 回答
1

如果您只搜索城市名称,我建议您使用 NSFetchRequest 实例的 setPropertiesToFetch: 方法来提高获取效率。您将分配一个代表名称的 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 获得跟踪模式。

于 2012-08-24T13:47:13.573 回答