当NSFetchRequests应返回1时返回0结果

时间:2010-02-16 16:11:15

标签: objective-c cocoa-touch nsfetchrequest

我试图在插入实体后对核心数据执行获取,并得到0结果。 我有一个Person Entity.And我在DataModule GUI中使用谓词构建了一个获取请求:

  

name ==“PERSONNAME”

在搜索名称之前,我先插入并保存。我知道这是有效的,因为我在表格中显示名称,并在我关闭并再次打开应用程序后保存了coredata。

这是我为fetch编码的代码。 请帮助我理解为什么我得到0结果

-(Person *)findPersonByName:(NSString *)name{
    NSLog(@"looking for person with name: %@",name);
    NSDictionary *subs = [NSDictionary dictionaryWithObject:name forKey:@"PERSONNAME"];
    NSAssert(self.managedObjectModel, @"anything wrong with managedObjectModel");//no
    NSFetchRequest *fetch = [self.managedObjectModel fetchRequestFromTemplateWithName:@"getPersonByName" substitutionVariables:subs];
    NSAssert(fetch, @"anything wrong with fetch?");//no
    NSLog(@"fetch: %@",fetch);
    NSError *error;
    NSArray *result = [self.managedObjectContext executeFetchRequest:fetch error:&error];
    NSLog(@"fetch request getQuestionsByParent: %u found (sub variables:%@, results:%@)", [result count], subs, result);
    if (result == nil){
        // Deal with error...
    }
    else if([result count]>0){
        for (Person *person in result) {
            NSLog(@"search result: %@",person.name);
        }
    }
    return nil;
}

请帮助解决问题。 感谢

1 个答案:

答案 0 :(得分:2)

在谓词模板中:

name == "PERSONNAME"

应该是:

name == $PERSONNAME