获取请求返回一个对象数组 - NSFetchedResultsController返回null

时间:2011-09-26 16:30:57

标签: iphone objective-c ios core-data

    req = [[NSFetchRequest alloc] init];

    // entity
    ent = [NSEntityDescription entityForName:@"Medicine" inManagedObjectContext:context];
    [req setEntity:ent];

    // predicate
    pred = [NSPredicate predicateWithFormat:@"date > %@",referenceDate];
    [req setPredicate:pred];

    // sort descriptor
    sorter = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:YES];
    [req setSortDescriptors:[NSArray arrayWithObjects:sorter, nil]];

    NSFetchedResultsController *frc = [[NSFetchedResultsController alloc] initWithFetchRequest:req managedObjectContext:context sectionNameKeyPath:@"date" cacheName:@"asdsad"];
    NSLog(@"%@",[frc fetchedObjects]); // returns (null)

    //NSArray *frc = [context executeFetchRequest:req error:nil];
    //NSLog(@"%@",frc); // returns 4 objects

正如你在我的代码中看到的那样,我最后有两个不同的位。

第一个代码(未注释)在NSLog中返回null。

第二个代码(注释)从上下文返回一个包含4个对象的数组。

出现这种情况的原因是什么?我做错了吗?

1 个答案:

答案 0 :(得分:6)

因为你还需要做一件事:performFetch。

以下是文档中的详细信息:

  

performFetch:   执行接收者的获取请求。

  • (BOOL)performFetch:(NSError **)错误 参数 错误 如果获取不成功,则返回时包含描述问题的错误对象。 回报价值 如果获取成功,则为YES,否则为NO。

讨论 执行此方法后,可以使用属性fetchedObjects 访问接收者的获取对象。