ios - 使用 NSFetchedResultsController 后 TableView 保持为空

标签 ios core-data tableview nsfetchedresultscontroller

我尝试使用 NSFetchedResultsController 来向我的 tableView 显示部分。但是现在我的 tableView 一直是空的。

 @property (nonatomic,strong) NSManagedObjectContext* managedObjectContext;
@property (nonatomic, retain) NSFetchedResultsController *fetchedResultsController;


- (NSManagedObjectContext *)managedObjectContext
{
    NSManagedObjectContext *context = nil;
    id delegate = [[UIApplication sharedApplication] delegate];
    if ([delegate performSelector:@selector(managedObjectContext)]) {
        context = [delegate managedObjectContext];
    }
    return context;
}

- (void)viewDidLoad
{
   self.fetchedResultsController = nil;
    self.fetchedResultsController.delegate = nil;

}


- (NSFetchedResultsController *)fetchedResultsController {

    if (_fetchedResultsController != nil) {
        return _fetchedResultsController;
    }

    NSManagedObjectContext *managedObjectContext = [self managedObjectContext];


    // Create and configure a fetch request with the plant entity.
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Travel" inManagedObjectContext:managedObjectContext];
    [fetchRequest setEntity:entity];

    // Create the sort descriptors array.
    NSSortDescriptor *nameDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:nameDescriptor, nil];
    [fetchRequest setSortDescriptors:sortDescriptors];

    // Create and initialize the fetch results controller.
    NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:@"country" cacheName:@"country"];
    self.fetchedResultsController = aFetchedResultsController;
    _fetchedResultsController.delegate = self;

    return _fetchedResultsController;
}


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return [[self.fetchedResultsController sections] count];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    id <NSFetchedResultsSectionInfo> sectionInfo = [self.fetchedResultsController sections][section];
    return [sectionInfo numberOfObjects];
}


- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { return @""; }

我按照教程进行操作,但 tableView 现在是空的。我的 tableView 之前工作正常(使用 coreData)。 也许有人知道我的问题的答案。谢谢。

最佳答案

在构造完 NSFetchedResultsController 之后,您似乎忘记了这样做:

NSError *error;
BOOL success = [_fetchedResultsController performFetch:&error];

关于ios - 使用 NSFetchedResultsController 后 TableView 保持为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18270847/

相关文章:

ios - 在 CoreData 数据库中存储包含 CGPoints 的数组 (Swift)

ios - 来自另一个类的变量

ios - 是否可以隐藏滚动条(不删除滚动条)phonegap ios?

ios - Xcode下载信息

ios - 在编译时检查框架是否存在?

multithreading - 从第二个线程保存时核心数据合并冲突

cocoa - 如何将 NSKeyedUnarchive NSManagedObject 的子类导入到 Core Data 中?

swift - 如何更改uitableViewController中的tableView高度(Swift)

hashmap - JavaFX:使用 HashMap 绑定(bind)向 TableView 添加行

ios - cellforRowAtIndexPath 效率如何?