iOS:将NSFetch的结果放入数组的最简单方法

问题描述:

我想创建一个用户数组。获取提取结果并将其放入数组的最简单方法是什么?iOS:将NSFetch的结果放入数组的最简单方法

这是我使用NSFetchedResultsController的当前代码。感谢您的帮助清除我的脑子雾...

- (void)viewDidLoad { 
    [super viewDidLoad]; 
NSArray *users = fetchedResultsController;// not working. What should this be? 
} 

-(NSFetchedResultsController *)fetchedResultsController { 
    if (_fetchedResultsController==nil){ 
     NSFetchRequest *fetchRequest= [[NSFetchRequest alloc] init]; 
     NSManagedObjectContext *context = [chModel sharedInstance].managedObjectContext; 
       NSEntityDescription *entity =[NSEntityDescription entityForName:@"User" inManagedObjectContext:context]; 
     fetchRequest.entity=entity; 

     NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc]initWithKey:@"date" ascending:NO]; 
     NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor,nil]; 
     fetchRequest.sortDescriptors=sortDescriptors; 

     self.fetchedResultsController=[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:context sectionNameKeyPath:nil cacheName:nil]; 
     self.fetchedResultsController.delegate=self; 
     NSError *error = nil; 
     if (![self.fetchedResultsController performFetch:&error]) { 
      NSLog(@"Unresolved error %@,%@",error,[error userInfo]); 
      abort(); 
     } 

    } 
    _users = [_fetchedResultsController fetchedObjects]; 
    return _fetchedResultsController; 
} 

fetchedResultsControllerNSFetchedResultsController实例没有它的任何内容。

既然你已经实例化的结果控制器到达所取得的对象,招行

_users = [_fetchedResultsController fetchedObjects]; 

viewDidLoad

_users = [self.fetchedResultsController fetchedObjects]; 
+0

我认为你是正确的,从而具有显着的是正确的。但是,将日志语句放入提取的结果控制器中,我发现它没有被调用。除了_users = [self.fetchedResultsController fetchedObjects];还有什么我必须做,以确保它被称为?它遵循nsferchedresultsdelegate协议 – zztop

+0

根据代码,它应该在每次调用getter时被调用。 – vadian