如何在iphone上模拟核心数据的左连接

时间:2010-11-07 13:49:11

标签: iphone core-data

我正在使用coredata中的2个实体:

  • 工人
  • 办公室

工人在一个(也是唯一一个)办公室工作 一个办公室被几名工人占用。

现在我想用工作人员填充TableView,按办公室分组。这代表表格视图:

  

第1节:办公室1   ..........工人1   ..........工人2   ..........工人3   第2节:办公室2(空)
  第3节:办公室3
  ..........工人4   ..........工人5

在SQL中我可以使用此查询:

SELECT *  
FROM office 
LEFT JOIN worker ON office.officeId = worker.officeId  
order by office.name, worker.name

现在使用核心数据,我遇到了一些问题:

  • 如果我获取办公室,我可以作为Set访问worker(来自关系),但这不适合使用表视图(用于排序和操作)
  • 如果我通过关系获取工作人员并访问办公室,则不会获取空办公室。

如何使用coredata获取此类数据?

由于

2 个答案:

答案 0 :(得分:1)

获取您的工作人员并使用您已经完成的部分的办公室。空办公室不应该在UITableView中显示,因为它与HIG相反。

答案 1 :(得分:1)

我会取出办公室,然后简单地对工作人员进行排序(按字母顺序排列,根据等级属性等)以便在表格中显示。在Office实体类上创建一个方法来为工作者返回一个排序数组可能是有意义的,例如:

@implementation Office

- (NSArray *)sortedWorkers
{
    return [self.workers sortedArrayUsingDescriptors:
            [NSArray arrayWithObjects:
             [NSSortDescriptor sortDescriptorWithKey:@"lastName" ascending:YES],
             [NSSortDescriptor sortDescriptorWithKey:@"firstName" ascending:YES],
             nil]];
}