NSPredicate不同的实体

时间:2013-01-10 15:49:53

标签: ios objective-c core-data nspredicate nsfetchedresultscontroller

我想对不同的实体进行NSPredicate。这是我的核心数据库。

enter image description here

为了简单起见,这是我应该做的查询。

Select c.c_name From Company c, Person p Where c.c_id = p.cu_company_id

现在我想知道如果我想要像上面的查询那样实现结果,我的谓词应该是什么样子。

1 个答案:

答案 0 :(得分:1)

假设c_id和cu_company_id是整数,您可以尝试

    NSFetchRequest *fr = [[NSFetchRequest alloc] initWithEntityName:@"Person"];
    NSError *error;
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"cu_company_id == data.company.c_id"];
    [fr setPredicate:predicate];
    NSArray *persons = [self.managedObjectContext executeFetchRequest:fr error:&error];

一旦你有了人物阵列,你就可以循环通过它并得到这个人的名字。为了实现它的另一种方式

    NSFetchRequest *fr = [[NSFetchRequest alloc] initWithEntityName:@"Company"];
    NSError *error;
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"c_id == data.person.cu_company_id"];
    [fr setPredicate:predicate];
    NSArray *companies = [self.managedObjectContext executeFetchRequest:fr error:&error];

一旦你有公司阵列,你就可以循环通过它并得到公司的名字。