2011-03-07 48 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]]; 
}