【发布时间】:2014-11-07 18:28:41
【问题描述】:
Father 和 Son 实体之间存在一对多关系,其中 Father 可能没有或 N Son。使用Core Data,我如何获得所有Son,基于我对Father的搜索。
例如:我有一个Father,他拥有Id 1。我需要获取所有Son 拥有Father 和Id 1。
【问题讨论】:
标签: ios objective-c iphone core-data swift
Father 和 Son 实体之间存在一对多关系,其中 Father 可能没有或 N Son。使用Core Data,我如何获得所有Son,基于我对Father的搜索。
例如:我有一个Father,他拥有Id 1。我需要获取所有Son 拥有Father 和Id 1。
【问题讨论】:
标签: ios objective-c iphone core-data swift
这里是一个使用 NSManagedObject 的示例(子类化更容易)。
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Father" inManagedObjectContext:your_managedObjectContext]];
// You speak about you use Id, but is word reserved better use resourceId or something like that
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"resourceId=1"];
[request setPredicate:predicate];
NSArray *result = [your_managedObjectContext executeFetchRequest:request error:nil];
NSManagedObject *father_Id1 = [result firstObject];
NSSet *sons = [father_Id1 valueForKey:@"theNameOfYourRelationshipSons"];
【讨论】:
这是一个快速代码,用于获取所有父亲为 id = 5 的儿子
let fetchRequest = NSFetchRequest(entityName: "Son")
fetchRequest = NSPredicate(format: "father.id == %@", argumentArray: [id])
let fathers = context.executeFetchRequest(fetchRequest, error: nil) as? [Father]
【讨论】:
Son实体中有fathers关系(这在现实生活中永远不会发生:))谓词格式为fathers.id == %@