未实现的谓词 SQL 生成

Bla*_*gic 1 database core-data ios

我有一个具有以下一对多关系的数据库:Device -properties-> Property

我想要一台具有至少一个具有特定显示类型的属性的设备。

    NSArray *energyDisplayTypes = [[NSArray alloc] initWithObjects:[NSNumber numberWithInt:18],[NSNumber numberWithInt:39],[NSNumber numberWithInt:50],[NSNumber numberWithInt:62],[NSNumber numberWithInt:63], nil];
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Device"
                                              inManagedObjectContext:context];
    NSError *error;
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"properties.displayType IN %@", energyDisplayTypes];
    [fetchRequest setPredicate:predicate];
    [fetchRequest setEntity:entity];
    NSArray *products= [context executeFetchRequest:fetchRequest error:&error];
Run Code Online (Sandbox Code Playgroud)

我不断收到此异常:

'NSInvalidArgumentException', reason: 'unimplemented SQL generation for predicate : properties.displayType IN {18, 39, 50, 62, 63}'
Run Code Online (Sandbox Code Playgroud)

我对数据库没有太多经验,所以这可能很简单。如果有人可以帮助我,我将不胜感激

pba*_*sdf 5

如果properties是一对多关系,那么您需要指示与数组匹配的属性的显示类型。共有三个选项:任意、全部或无。我怀疑您希望任何属性的显示类型匹配,因此您可以使用:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY properties.displayType IN %@", energyDisplayTypes];
Run Code Online (Sandbox Code Playgroud)