这里不允许使用多个密钥

时间:2017-07-11 06:21:36

标签: ios core-data

在这里,尝试从我的两个实体名称中获取记录:Resgistration&独特。和他们之间的关系名称是roshan。 当m执行它时显示错误:'NSInvalidArgumentException',原因:'在这里不允许多对键'

NSManagedObjectContext *context = [appDelegate manageObjectContext];
    NSError *error = nil;

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"roshan.number == %@", @"1"];
    NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Resgistration" inManagedObjectContext:context];

    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    [request setEntity:entityDescription];
    [request setPredicate:predicate];
    [request setRelationshipKeyPathsForPrefetching:[NSArray arrayWithObjects:@"Unique",nil]];
    [request setIncludesSubentities:YES];

    NSArray* returnArray = [context executeFetchRequest:request error:&error];
    if([returnArray count] > 0) {

        Resgistration* reg = [returnArray objectAtIndex:0];
        NSLog(@"%@ %@", reg.name, reg.number);
    }

1 个答案:

答案 0 :(得分:2)

roshan是一个多对多的关系,所以“roshan.number == 1”这个陈述含糊不清。

  • 你的意思是它至少有一个roshan,数字等于1(“ANY roshan.number == 1”。
  • 你的意思是所有的roshans都等于一个(“所有roshan.number == 1”)。
  • 你的意思是只有一个罗山,它有一个(“所有roshan.number == 1 AND roshan。@ count == 1”)。