代码之家  ›  专栏  ›  技术社区  ›  fabian789

特殊核心数据获取

  •  0
  • fabian789  · 技术社区  · 14 年前

    我的核心数据模型有一个名为“part”的属性实体。这个实体的不同对象可以为“part”共享相同的值,这意味着它们都属于同一个“part”。一个 NSFetchedResultsController 现在可以显示基于这些值的部分,将属于一起的所有内容都放在一起。这样做没有问题,但是我现在需要“part”的值来做一些不同的事情。我只想获取“part”的不同值并在tableView中显示它们,确保相同的值不会显示两次。我该怎么做?

    我很感激你的帮助,费边

    2 回复  |  直到 14 年前
        1
  •  0
  •   fabian789    14 年前

    好吧,我自己想出来了。基本上填充一个数组 partNames 根据我的信息 NSFetchedResultsController :

    for (int i = 0; i < [[self.fetchedResultsController sections] count]; i++) {
        id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:i];
        [partNames addObject:[sectionInfo name]];
    }
    
        2
  •  0
  •   Sanjeev Rao    14 年前

    - (NSFetchedResultsController *)fetchedResultsController {
    
    if (fetchedResultsController_ != nil) {
       return fetchedResultsController_;
    
    }
    
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
    [fetchRequest setEntity:entity];
    [fetchRequest setFetchBatchSize:20];
    
    
    
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO];
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
    [fetchRequest setSortDescriptors:sortDescriptors];
    
    NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"name" cacheName:nil];
    aFetchedResultsController.delegate = self;
    self.fetchedResultsController = aFetchedResultsController;
    
    [aFetchedResultsController release];
    [fetchRequest release];
    [sortDescriptor release];
    [sortDescriptors release];
    
    NSError *error = nil;
    if (![fetchedResultsController_ performFetch:&error]) {
        NSLog(@"Unerwarteter Fehler %@, %@", error, [error userInfo]);
        abort();
    }
    
    return fetchedResultsController_;
    

    }

    这将为您提供按名称和组bu名称排序的所有人员,删除重复值。

    -----创建fetcgccontroller时,必须提到sectionNameKeyPath * * -----------