Получение NSManagedObject из NSSet - PullRequest
4 голосов
/ 15 февраля 2011

У меня есть две сущности с отношениями один-ко-многим между ними. У объекта, который содержит «многие», есть ожидаемое свойство NSSet. Что я не уверен, так это как получить доступ к определенному элементу в NSSet. NSSet содержит объекты с несколькими свойствами, одним из которых является currentWeek. Я хочу получить доступ к объекту в моем NSSet, который имеет определенный currentWeek.

Я знаю, что могу сделать FetchRequest, чтобы найти его, но я предполагаю, что есть более простой способ использования NSSet.

1 Ответ

10 голосов
/ 15 февраля 2011

У вас есть пара вариантов.

NSArray* objectsArray = [yourSet allObjects];

Это заполняет objectsArray всеми объектами в наборе, после чего вы можете перечислять их в поисках нужного вам объекта или объектов.

Вы также можете использовать предикат примерно так:

NSPredicate *desiredWeekPredicate = [NSPredicate predicateWithFormat:@"currentWeek == %d", currentWeekYouWant];
NSSet *objectsWithDesiredWeek = [yourSet filteredSetUsingPredicate:predicate];

(Ваш предикат будет выглядеть по-разному в зависимости от того, как вы храните currentWeek). Если у вас есть только один объект на currentWeek, вы можете просто вызвать -anyObject для набора objectsWithDesiredWeek, чтобы получить ваш объект. Если у вас может быть более одного объекта с одним и тем же currentWeek, то вызов метода -allObjects для objectsWithDesiredWeek даст вам массив со всеми объектами, которые используют нужную неделю.

...