由于错误导致无法获取数据的核心数据:无法格式化解析字符串nspredicate

时间:2016-10-18 19:02:26

标签: objective-c core-data nspredicate

在观看关于核心数据的youtube教程时(https://youtu.be/mEAav7dM4hk?t=1581)*我成功地能够保存数据,但是当我尝试在" searchperson"按钮按下它会引发错误:

 I HAVE GOT TWO TEXT FIELDS :firstname and lastname

 I HAVE GOT THREE BUTTONS :addperson, sarchperson and deleteperson

 I HAVE GOT ONE DISPLAY LABEL TO TELL WHETER DATA(person) ADDED OR NOT

   error:
    CoreDataTutorialz2[1601:907] *** Terminating app due to 
   uncaught exception 'NSInvalidArgumentException', reason: 
  'Unable to parse the format string "firstname like %@, 
 lastname like %@"'         

- (IBAction为)searchperson:(ID)发送方

 {

 NSEntityDescription *entitydesc=[NSEntityDescription   entityForName:@"Person" inManagedObjectContext:context];

NSFetchRequest *request=[[NSFetchRequest alloc]init];

[request setEntity:entitydesc];

NSPredicate *predicate=[NSPredicate predicateWithFormat:@"firstname  like %@, lastname like  %@",self.firstnametextfield.text,self.lastnametextfield.text];

[request setPredicate:predicate];

NSError *error;

NSArray *matchingData=[context executeFetchRequest:request error:&error];

NSLog(@"error:%@",error);

if(matchingData.count <=0)
{
    self.displaylabel.text=@"no person found";
}
else
{
    NSString *first_name;
    NSString *last_name;

    for(NSManagedObject *obj in matchingData )
    {
        first_name=[obj valueForKey:@"firstname"];
        last_name=[obj valueForKey:@"lastname"];
    }

   self.displaylabel.text= [NSString stringWithFormat:
   @"firstname=%@, lastname=%@",first_name,last_name];


}
  https://youtu.be/mEAav7dM4hk?t=1581

 CAN ANYONE HELP ME OUT WHATS WRONG HERE. THANKS IN ADVANCE!

1 个答案:

答案 0 :(得分:0)

我在通过http://stackoverflow.com/questions/31468095/nspredicate-with-core-data?rq=1

后找到的解决方案

NSPredicate * predicate = [NSPredicate predicateWithFormat:@&#34; firstname CONTAINS%@ AND lastname CONTAINS%@&#34;,self.firstnametextfield.text,self.lastnametextfield.text];