2011-03-07 2 views
0

NSFetchRequest setpredicate 질문

내가 다음 코드를 사용 * 그때 ""@ 비어있는 경우 술어에 입력 한 값을 확인하고 싶지만 오류

당신이 날

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]; 
을 위해 그것을 고칠 수에게 제공

답변

2

우선, StudentName != ""은 Objective-C에서 작동하지 않습니다. 변수가 빈 문자열인지 확인하려면 [StudentName isEqualToString:@""]을 사용해야합니다.

두 번째로 LIKE과 함께 * 와일드 카드를 사용하려고 시도하는 중 하나가 작동하지 않습니다. 가져 오기 요청에 조건부를 조건부로 추가하는 것이 좋습니다.

if ([StudentName isEqualToString:@""]) { 
    [fetchRequest setPredicate:[NSPredicate 
     predicateWithFormat:@"(StudiesStudent.StudentName LIKE %@)", StudentName]]; 
}