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

Tho*_*son 2 iphone core-data objective-c ios

    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
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Max*_*eod 6

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

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

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

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

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