核心数据:NSPredicate与托管对象

时间:2012-02-04 10:37:13

标签: objective-c ios core-data

我正在使用Core Data创建一个iOS 5应用程序。

我有两个实体ItemCategory这两个实体之间存在多对多关系,即Item属于多个类别而Category有很多项目。

我想要做的是,给定一个类别,我想知道该类别的项目所关联的所有类别。为此,我试图执行以下请求:

NSEntityDescription *catEntity = [NSEntityDescription entityForName:@"Category" inManagedObjectContext:context];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
request.entity = catEntity;
request.predicate = [NSPredicate predicateWithFormat:@"items IN %@",[category.items allObjects]];
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]];    
NSError *error = nil;
NSArray *categories = [context executeFetchRequest:request error:&error];

但是在执行此操作时,我收到以下错误:

'NSInvalidArgumentException', reason: 'unimplemented SQL generation for predicate : (items IN {<Item: 0x89b9c50> (entity: Item; id: 0x89be960 <x-coredata://A5DE0832-95F1-460C-9F40-202A10E16BDC/Item/p17> ; data: {
    attributes =     (
    );
    categories =     (
        "0x89be540 <x-coredata://A5DE0832-95F1-460C-9F40-202A10E16BDC/Category/p28>",
        "0x89be680 <x-coredata://A5DE0832-95F1-460C-9F40-202A10E16BDC/Category/p29>"
    );
    name = "Some Item";
})})'

我在这里做错了什么?

1 个答案:

答案 0 :(得分:3)

试试这个,我不确定但它可能会有效:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY items IN %@", [category.items allObjects]];