основные данные iphone — Как создать NSPredicate для NSFetchedRequest в этом случае?

#iphone #core-data

#iPhone #core-data

Вопрос:

У меня большое количество элементов в core data.

У каждого элемента есть атрибут с именем «Source», который представляет собой строку, указывающую источник, к которому принадлежит этот элемент.

Когда я извлекаю данные из core data, я буду извлекать элементы из 10 источников (всего более 200 источников) каждый раз, и каждый раз 10 источников выбираются случайным образом перед извлечением.

Как я могу написать NSPredicate для этого случая?

Если каждый раз извлекать элементы только из 1 источника, это легко:

 NSPredicate *pred = [NSPredicate predicateWithFormat:@"Source like %@", @"source1"];
  

Но что, если это 10 источников и они меняются со временем? нужно ли мне писать, как

 NSPredicate *pred = [NSPredicate predicateWithFormat:@"(Source like %@) AND (Source like %@) AND...", @"source1", @"source3", ...];
  

Спасибо

Ответ №1:

 NSPredicate *p=[NSPredicate predicateWithFormat:@"source in %@", anArrayOfSourceStrings];
  

Ответ №2:

NSPredicate *pred = [NSPredicate predicateWithFormat:@»Источник в (%@, %@, %@, %@, …), @» source1″, @»source3″, …];

Комментарии:

1. Есть ли лучший способ, чтобы я мог присвоить массив, содержащий желаемые имена источников, NSPredicate? в противном случае, что, если количество желаемых имен источников равно 100??