Как получить только некоторые объекты, соответствующие атрибуту Bool - PullRequest
1 голос
/ 31 июля 2011

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

Чтобы сделать это, я подумал добавить новый атрибут в мою сущность, атрибут BOOL, чтобы я мог выбирать только те объекты, у которых значение этого атрибута равно YES или NO в зависимости от ситуации.

Возможно ли сделать что-то подобное?

Я нашел метод -setPropertiesToFetch: класса NSFetchRequest, который может быть полезен, но я не знаю, смогу ли я использовать его, чтобы увидеть другое значение BOOL.

1 Ответ

3 голосов
/ 31 июля 2011

Похоже, вы просто хотите использовать предикат. Справочник по классам NSPredicate дает хорошее представление о том, как их использовать. По сути, это добавляет фильтр к вашим результатам. Например, допустим, у вас есть объект базовых данных с атрибутом myBool, который является BOOL (но, конечно, хранится как NSNumber). Чтобы отфильтровать результаты на основе этого, вы должны использовать что-то вроде этого

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"myBool == %@", [NSNumber numberWithBool:YES]];
[fetchRequest setPredicate:predicate];

затем продолжайте как обычно. Это вернет только те результаты, которые имеют значение myBool как YES.

При этом, если вы используете запрос для простого заполнения tableView, вам может быть лучше использовать NSFetchedResultsController . Отличное руководство по его реализации можно найти здесь .

...