出于某种原因,下面的代码产生了奇怪的输出。
#define INITIAL_BATCH_SIZE 500
// Initializes the NSFetchedResultsController to the following request
- (void)initializeFetchResultsController
{
// Makes a request for the given entity
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Tweet"];
request.predicate = nil;
request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"timestamp"
ascending:NO]];
request.fetchBatchSize = INITIAL_BATCH_SIZE;
NSArray *matches = [self.managedObjectContext executeFetchRequest:request error:NULL];
NSLog(@"%d", [matches count]);
// Creates a fetchedResultsController
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:self.managedObjectContext
sectionNameKeyPath:nil
cacheName:nil];
}
当我打印matches count
时,我得到144192,但是当我打印出self.fetchedResultsController
中的部分数量时,我使用下面的代码得到0。
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
NSLog(@"Sections: %d", [[self.fetchedResultsController sections] count]);
return [[self.fetchedResultsController sections] count];
}
我已经在视图中初始化了代码,并且在调试期间我注意到self.fetchedResultsController
已初始化,因此问题不会处理已初始化的self.fetchedResultsController
。
我试图找出原因,但不能。有关更多信息,我有一个UIViewController,其中包含一个tableview,我在其中连接了它的委托和数据源,但我认为没有任何问题导致这个问题。