Получить количество объектов в отношении Core Data - PullRequest
4 голосов
/ 03 октября 2009

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

Между рецептом и ингредиентами существует взаимосвязь oneToMany.

Я хочу отобразить номер ингредиента в строке таблицы рецептов. Я знаю, как настроить все это в интерфейсном конструкторе со строками, но я не знаю, как рассчитать количество ингредиентов для одного рецепта.

Возможно ли это?

Ответы [ 3 ]

12 голосов
/ 10 ноября 2009

Используйте countForFetchRequest вместо executeFetchRequest и (для хранилищ с поддержкой SQL) он выполнит COUNT вместо SELECT.

10 голосов
/ 02 июня 2010

Если вы используете основные данные, вы можете просто спросить список ингредиентов, сколько ингредиентов в нем содержится, вызвав метод подсчета:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    int count = [recipe.ingredients count];
    return count;
}

Чтобы узнать, какими свойствами и методами обладает класс коллекции, просмотрите класс NSSet в документации .

Я узнал, на какой класс смотреть, просмотрев сгенерированный класс, который создает основные данные:

@class ParentObject;
@interface ParentObject :  NSManagedObject  
{
}
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSSet* childObjects;
@end
1 голос
/ 03 октября 2009

Просто сделайте выборку для всех ингредиентов с предикатом, который разрешает все совпадения. Это NSFetchRequest вернет NSArray при выполнении. Просто наберите [myArray count], чтобы получить количество ингредиентов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...