NSFetchRequest задал предикатный вопрос - PullRequest
0 голосов
/ 07 марта 2011

Я хочу проверить значение, введенное в предикат, если пусто @ "", то *

Я использовал следующий код, но он выдает ошибки

Не могли бы вы исправить это для меня

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription 
                               entityForName:@"Studies" inManagedObjectContext:_context];
[fetchRequest setEntity:entity];



 [fetchRequest setPredicate:[NSPredicate predicateWithFormat:
                             @"( StudiesStudent.StudentName LIKE %@ )", ( if(StudentName != "" )  StudentName  else @"*"  )                              ]]; 

NSError *error;
self.StudentList = [_context executeFetchRequest:fetchRequest error:&error];
self.title = @"patients Result"; 
[fetchRequest release];

1 Ответ

2 голосов
/ 07 марта 2011

Прежде всего, StudentName != "" не будет работать в Objective-C.Вы должны использовать [StudentName isEqualToString:@""], если хотите узнать, является ли ваша переменная пустой строкой.

Во-вторых, ваш предикат тоже не будет работать, пытаясь использовать подстановочный знак * с LIKE,Я бы предложил условно добавить предикат в запрос на выборку:

if ([StudentName isEqualToString:@""]) {
     [fetchRequest setPredicate:[NSPredicate 
       predicateWithFormat:@"(StudiesStudent.StudentName LIKE %@ )", StudentName]];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...