核心数据。是否有可能像使用普通SQL一样创建视图

时间:2014-09-11 15:03:41

标签: xcode uitableview core-data nsfetchedresultscontroller nsfetchrequest

在普通的SQL世界中,您将使用“创建视图...”来定义一个或多个表上的视图,例如获得加入并已经是一个组。这在核心数据中是否也有可能?

我问的原因是,我有一张详细的表格。每个明细记录都有两个键和一个数量。现在我需要在表格视图中显示由两个键分组的金额总和 - 即该部分中的第一个键,第二个键作为具有总和金额的正常条目。我认为FRC会起作用,但它没有分组(加上详细记录)。通过正常的提取请求,我可以对所有内容进行分组 - 但是处理部分手册似乎需要做很多工作。所以我想,最好的是,我在桌面上放置了一个视图并使用FRC将其带入表格视图中。那有意义吗?非常感谢任何帮助。

示例:

I have three fields:
A X  2
A X  2
A Z  3
B X  2
B Y  2
B Y  1
B Z  8

因此我需要

 Section : A
 X 4
 Z 3
 Section: B
 Y 2
 Z 8

1 个答案:

答案 0 :(得分:0)

所以我不确定是否有更短的答案,但这里有你怎么做。 我假设第一列,第二列和第三列被称为:firstCol,secondCol,thirdCol。

您可以使用此谓词获取" A"的所有对象。并将其放入resultArray

//loop over the letters A to Z. Here's what it would look like:
NSPredicate *aPredicate = [NSPredicate predicateWithFormat:@"firstCol = %@)", @"A"];

然后找到第一列中有A的对象的所有第二列字母(resultArray):

NSArray *allLetters = [resultArray valueForKeyPath:@"@distinctUnionOfObjects.secondCol"];

如果是" A" allLetters将包含X和Z.然后遍历allLetters并添加第三列:

For (NSString *letter in allLetters) {
   int sum = [allLetters valueForKeyPath:[NSString stringWithFormat:@"@sum.%@", letter]];
   //this sums up each letter for example returns 4 for X in case of "A"
   //insert the sum in an Array and then a Dictionary that can be used for data source of the table.
}