Вопрос по ios – NSPredicate, получить результаты с подмножеством отношения один ко многим

2

Я работаю с Core Data иNSFetchedResultsController.

Моя модель данных выглядит так:

Product с отношениями один-ко-многим называетсяdataLines. The dataLine сущность имеет имя свойстваtheWeek.

Я хочу получить всеProduct гдеdataLines.theWeek == someValue, Это легко сделать с помощью подзапроса. Но это возвращает все линии данных. Можно ли создатьNSPredicate который возвращаетProduct и подмножество, если dataLines только сdataLines == someValue?

Error: User Rate Limit ExceededIs it possible to create a NSPredicate that returns the Product and a subset if dataLines only with the dataLines == someValueError: User Rate Limit Exceeded Lorenzo B
Error: User Rate Limit Exceeded Lorenzo B

Ваш Ответ

3   ответа
0

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity: [NSEntityDescription entityForName:@"Product" ...]]

Error: User Rate Limit Exceeded

[fetchRequest setPredicate:
  [NSPredicate predicateWithFormat:@"ANY dataLines.theWeek == %@", <whatever week>]];

Error: User Rate Limit Exceeded<whatever week>.

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded karlofk
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
1

dataLineProductdataLinesomeRelation

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:[NSEntityDescription entityWithName:@"dataLine" inManagedObjectContext:self.managedObjectContext]];
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"dataLines.week == %@",theWeek]];

NSMutableArray *tmpProduct [[NSMutableArray init] alloc];
NSMutableArray *tmpArray = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];

for (dataLine *theDataLine in tmpArray);
NSLog(@"%@",theDataLine.someRelation.name);
tmpProduct = theDataLine.someRelation.name;

tmpProduct

8

[NSPredicate predicateWithFormat:@"SUBQUERY(dataLines, $x, $x.theWeek == %@)[email protected] > 0)", [NSNumber numberWithInt:18]];

[NSPredicate predicateWithFormat:@"ANY dataLines.theWeek == %@", [NSNumber numberWithInt:18]];

[NSPredicate predicateWithFormat:@"SUBQUERY(dataLines, $x, $x.theWeek == %@ or $x.theWeek == %@)[email protected] > 0)", [NSNumber numberWithInt:18], [NSNumber numberWithInt:19]];

ANYANY ... OR ANY ....

theWeek

Похожие вопросы