NSFetchRequest canot获取上下文中存在的实体

时间:2012-04-14 20:31:25

标签: ios core-data nspredicate nsfetchrequest

我有一个问题,我在上下文中插入实体A.在我插入所有实体A之后,我在上下文中执行获取请求:

NSEntityDescription* entity = [NSEntityDescription entityForName:@"A" inManagedObjectContext:ctx];
NSFetchRequest* fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:entity];
NSError* fetchError;
NSArray* results = [ctx executeFetchRequest:fetchRequest error:&fetchError];

上面的代码能够获取所有这些代码,我可以在NSLog中看到它们......

在相同的上下文之后,我尝试获取年龄= 5的所有实体A,如下所示: (我将“年龄”分配给attirbute,将NSString @“5”分配给值)

NSEntityDescription* entity = [NSEntityDescription entityForName:@"A" inManagedObjectContext:ctx];
NSFetchRequest* fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:entity];
NSPredicate *filter = [NSPredicate predicateWithFormat:@"%K == %@",attr,value];
[fetchRequest setPredicate:filter];
NSError* fetchError;
NSArray* results = [ctx executeFetchRequest:fetchRequest error:&fetchError];

问题是,即使NSLog显示年龄为5的实体A,此最后一次获取请求也始终为null!什么都没有。

有什么建议吗?为什么获取所有这些实体显示年龄为5且仅为5年级过滤的实体仅在相同的上下文后才能正常工作?

由于

1 个答案:

答案 0 :(得分:3)

尝试将age设置为初始化为5的NSNumber实例而不是NSString @“5”。