【发布时间】:2012-04-15 04:48:36
【问题描述】:
我在上下文中插入实体 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,如下所示: (我将“年龄”分配给属性,并将 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,这个最后的 fetch 请求总是返回 null!什么都没有。
有什么建议吗?为什么在同一上下文中获取所有这些显示年龄为 5 的实体并仅过滤年龄为 5 的实体不起作用?
谢谢
【问题讨论】:
-
模型中的年龄是什么类型?
-
NSNumber (Integer 64) ,另外,我刚刚发现如果我将谓词硬编码为 @"age == 5" 那么它就可以工作。我现在很困惑。
-
带有字符串参数的 %@ 插入引号以进行字符串比较。如果数据不是字符串,它不会比较...这就是为什么我问类型...
标签: ios core-data nspredicate nsfetchrequest