获取以给定字符串开头的所有项目

时间:2011-06-05 17:57:18

标签: iphone cocoa-touch core-data nspredicate

我希望得到所有以给定字符串开头的项目 当我使用谓词时,下面的代码会返回数千个项目,但是当它存在时,我会返回零记录。

我已经使用字段名称和术语进行了测试,这些字段和术语肯定存在于sqlite db。

NSManagedObjectContext *context        = [[DataSource sharedInstance] managedObjectContext];
NSEntityDescription    *entityDesc     = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:context];
NSSortDescriptor       *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"startTime" ascending:YES];
NSPredicate            *predicate      = [NSPredicate predicateWithFormat:@"(%@ beginswith %@)", fieldName, searchTerm, nil];

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

[request setEntity:entityDesc];
[request setPredicate:predicate];
[request setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];

NSError *error = nil;
NSArray *objects = [context executeFetchRequest:request error:&error];
[request release];

return objects;

解决
以下解决了这个问题:

NSString               *str            = [NSString stringWithFormat:@"%@ beginswith \"%@\"", fieldName, titleTerm];
NSPredicate            *predicate      = [NSPredicate predicateWithFormat:str];

内容的报价包装错误。

1 个答案:

答案 0 :(得分:1)

解决自己的问题时,你应回答自己的问题,而不是编辑问题。如果你不这样做,这个问题将显示为无人接听。您可以继续接受此答案,问题将被正确标记为已解决。


以下解决了这个问题:

NSString               *str            = [NSString stringWithFormat:@"%@ beginswith \"%@\"", fieldName, titleTerm];
NSPredicate            *predicate      = [NSPredicate predicateWithFormat:str];

内容的报价包装错误。