Вернуть несколько значений с NSPredicate - PullRequest
1 голос
/ 23 января 2012

Я использую NSPredicate для запроса основного хранилища данных.У меня есть атрибут типа NSNumber.Я хочу получить все атрибуты, которые равны 1.

Я пытался:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"attribute == %i", i];

Где я = 1.

Это работает, но возвращает только первый объект ссоответствующий атрибут.Я хочу ВСЕ объекты с этим атрибутом, когда он равен 1.

Где я иду не так?Я попытался поставить ALL перед запросом, но это вызвало сбой.

Обновление:

Это мой полный код:

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person"
                                          inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setResultType:NSDictionaryResultType];

NSNumber *attributeValue = [NSNumber numberWithInt:1];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"attribute == %@",
                          attributeValue];
[fetchRequest setPredicate:predicate];

NSError *error = nil;
NSArray *fetchResults = [managedObjectContext executeFetchRequest:fetchRequest
                                                                 error:&error];

return [fetchResults objectAtIndex:0];

А затем:

NSDictionary *dict = [self queryContextWithQuery:nil];
NSLog(@"%@", dict);

Журнал показывает только 1 из 3 возможных объектов, которые он должен показывать.

Ответы [ 3 ]

0 голосов
/ 23 января 2012

Это должно работать:

NSNumber *attributeValue = [NSNumber numberWithInt:1];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"attribute == %@",
        attributeValue];
0 голосов
/ 24 января 2012

Оказывается, проблема не в запросе.Это было с тем, как я возвращал результат.Я изменил метод, чтобы он возвращал массив вместо словаря, и изменил:

return [fetchResults objectAtIndex:0];

Кому:

return fetchResults;

И теперь я получаю правильные результаты.

0 голосов
/ 23 января 2012

Попробуйте это:

NSNumber *attributeValue = [NSNumber numberWithInt:1];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"myAttr == %@",
        attributeValue];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...