【问题标题】:Core Data attribute count and show the result in a TableViewCore Data 属性计数并在 TableView 中显示结果
【发布时间】:2012-05-08 10:11:16
【问题描述】:

我有一个名为 Car 的实体,它具有 2 个属性namecolor

我在数据库中有几辆车:

名称:本田思域

颜色:蓝色

名称:大众高尔夫

颜色:蓝色

名称:雷诺 Twingo

颜色:红色

名称:雪佛兰科迈罗

颜色:白色

现在我需要计算每种颜色的汽车数量,然后将结果放入 UITableView。

所以,例如,在 TableView 中会有:

蓝色 (2)

红色 (1)

白色 (1)

想象一下大约有 70 种不同的颜色。

我搜索了很多Core Data的网站和书籍,但我仍然不知道这是否可能。

有可能吗?如果可以,怎么做?

【问题讨论】:

    标签: ios core-data ios5 count nsfetchrequest


    【解决方案1】:

    这些是简单的提取。其实你可以用一个NSFetchedResultsController,把“color”设置为节名,它会返回给你一个所有对象的数组,它们会按颜色分组。

    类似...

    NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Car"];    
    NSSortDescriptor *sectionSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"color" ascending:YES];
    NSSortDescriptor *nameSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
    NSArray *sortDescriptors = [NSArray arrayWithObjects:sectionSortDescriptor, nameSortDescriptor, nil];
    [fetchRequest setSortDescriptors:sortDescriptors];
    
    NSFetchedResultsController *fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"color" cacheName:@"CarCache"];
    fetchedResultsController.delegate = self;
    self.fetchedResultsController = fetchedResultsController;
    
    NSError *error = nil;
    if (![self.fetchedResultsController performFetch:&error]) {
        // Handle error...
    }
    

    现在,您的数据将分为多个部分,每种颜色一个部分,其中的值按名称排序。要获取数据,只需查看 FRC 的 section 属性即可。

    【讨论】:

      【解决方案2】:

      我认为前面的答案不太正确。在您获取的结果控制器中,您执行通常的操作,但是

      • 您获取实体Color
      • 您按name(即颜色名称)排序

      cellForRowAtIndexPath: 中,您构建了要显示的适当字符串。

      Color *color = [self.fetchedResultsController objectAtIndexPath:indexPath];
      cell.textLabel.text = [NSString stringWithFormat:@"%@ (%d)", 
         color.name, color.cars.count];
      

      其中cars 是从颜色到汽车的反向关系的名称。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多