Ios5 CoreData:筛选FetchRequest结果为零

Ios5 CoreData:筛选FetchRequest结果为零,ios5,core-data,Ios5,Core Data,我正试图过滤一个到CD的获取请求,最初它是有效的,但现在它返回一个空数组。我已经检查了实体(提供者),并且我尝试筛选的密钥名称是正确的(提供者名称)。我已经检查了SQLite数据库,并且有一个名称与我正在搜索的providerName匹配的记录。(见下面的附图)。有人能检查一下我的代码,看看我是否做错了什么吗?谢谢: - (NSArray* ) filterItemsFromCoreData : (NSArray* ) filters { //create a managed object

我正试图过滤一个到CD的获取请求,最初它是有效的,但现在它返回一个空数组。我已经检查了实体(提供者),并且我尝试筛选的密钥名称是正确的(提供者名称)。我已经检查了SQLite数据库,并且有一个名称与我正在搜索的providerName匹配的记录。(见下面的附图)。有人能检查一下我的代码,看看我是否做错了什么吗?谢谢:

- (NSArray* ) filterItemsFromCoreData : (NSArray* ) filters { 

//create a managed object context
NSManagedObjectContext* context = [self managedObjectContext];

//create error container and fetch request
NSError* errMsg;
NSFetchRequest* fetchRequest = [[NSFetchRequest alloc] init];

//get our filters from passed array
NSString* filterProviderName = [filters objectAtIndex:0];
NSString* filterProviderZip = [filters objectAtIndex:1];
NSString* filterProviderPhone = [filters objectAtIndex:2];

//create predicate
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"providerName == %@", filterProviderName];

//create entity description
NSEntityDescription *entity = [NSEntityDescription
                               entityForName:@"Provider" inManagedObjectContext:context];

//add entity and predicate to fetch request
[fetchRequest setEntity:entity];
[fetchRequest setPredicate:predicate];

//get the objects
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&errMsg];
NSLog(@"%@", fetchedObjects);
return fetchedObjects;
}
实体屏幕截图

SQLite数据库

将谓词格式中的格式说明符
%@
更改为用单引号括起来
'%@

NSPredicate*谓词=[NSPredicate predicateWithFormat:@“providerName=='%@',filterProviderName]


这将再次返回结果。

您确定使用的是相同的managedObjectContext吗??您应该在视图控制器之间传递managedObjectContext,而不是创建一个新的。。。请提供[self-managedObjectContext]ahmad的代码,谢谢回复。这是在viewcontroller中发生的,mod是在这里创建的,有关详细信息,请参见下面的回复。您应该在AppDelegate中创建managedObjectContext,然后在(self.managedObjectContext==nil){self.managedObjectContext=[(AppDelegate*)[[UIApplication sharedApplication]delegate]中执行以下操作之一managedObjectContext];}
在viewDidLoad中加载您需要从中访问的任何类。此格式也是有效的谓词=[NSPredicate predicateWithFormat:@“providerName=%@”,filterProviderName];没有骰子。我还是有点紧张。当我只在实体上运行请求时(没有NSPredicate),它可以正常工作。