NSPredicate - фильтрация значений на основе БУЛЕВОЙ хранимой суммы

У меня есть базовый объект модели данных под названием Запись. В этом у меня есть атрибут IsFavorite.

Я хотел бы использовать NSPredicate для фильтрации результатов моего NSFetchedResultsController.

В настоящее время я получаю EXC_BAD_ACCESS, когда выборка выполняется.

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
// Edit the entity name as appropriate. 

NSEntityDescription *thisEntry = [NSEntityDescription entityForName:@"Entry" inManagedObjectContext:managedObjectContext_];
[fetchRequest setEntity:thisEntry];

NSPredicate *fetchPredicate = [NSPredicate predicateWithFormat:@"Entry.isFavorite == %@", [NSNumber numberWithBool: YES]];

[fetchRequest setPredicate:predicate];


NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@"Root"];
aFetchedResultsController.delegate = self;


NSError *error = nil;
if (![aFetchedResultsController performFetch:&error]) {
    NSlog(@"Unresolved error %@, %@", error, [error userInfo]);
    abort();
}

ЕСЛИ я удаляю строку, которая устанавливает предикат на fetchRequest, мой код выполняется отлично.

Я ясно n00bin на предикате, но испытал много затруднений при попытке узнать, как выполнить операции на БУЛЕВОМ ЗНАЧЕНИИ от базового объекта модели данных. Отмечено, что существуют ответы о том, как сделать это со строкой или международным значением, но я не могу найти БУЛЕВ пример.

Большое спасибо!

34
задан Lance 10 August 2010 в 01:52
поделиться

1 ответ

На самом деле это не относится к NSPredicate ... Всякий раз, когда у вас есть % @ в строке формата, соответствующее значение должно быть указателем на объект, а BOOL не подходит. Поэтому вместо передачи YES передайте [NSNumber numberWithBool: YES] .


В более новых версиях Xcode и SDK, чем когда я изначально писал ответ, вы можете использовать @YES вместо [NSNumber numberWithBool: YES] .

42
ответ дан 27 November 2019 в 16:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: