Оператор агрегирования NSPredicate IN не работает - PullRequest
1 голос
/ 06 февраля 2010

Я немного новичок в CoreData, но постепенно начинаю думать об этом. У меня проблемы со следующим кодом:

NSArray * artisteIds = [@"1,2,3,4" componentsSeparatedByString:@","];
predicate = [NSPredicate predicateWithFormat:@"(artisteId IN %@)", artisteIds]; 

Мой управляемый объект Artiste имеет поле NSNumber artisteId, и я перебрал все Artistes в контексте моего объекта, и определенно есть объекты с идентификаторами 1-420.

Но мой вспомогательный метод всегда возвращает пустой набор результатов с этим запросом

NSMutableArray* mutableFetchArtistes = [CoreDataHelper searchObjectsInContext:@"Artiste" :predicate :@"title" :YES :managedObjectContext];      

Есть предложения?

Для проверки работоспособности я использовал следующее и получил 3 результата

predicate = [NSPredicate predicateWithFormat:@"(artisteId = 1) or (artisteId = 2) or (artisteId = 3)", artisteIds];

1 Ответ

1 голос
/ 06 февраля 2010

Я думаю, что массив artisteIds должен содержать NSNumber объектов, например,

NSArray *artisteIds = [NSArray arrayWithObjects:
    [NSNumber numberWithInteger:1],
    [NSNumber numberWithInteger:2],
    [NSNumber numberWithInteger:3],
    [NSNumber numberWithInteger:4],
    nil];

Вы также можете использовать NSSet вместо NSArray, но я не уверен, что это изменит.

...