核心数据。是不是可以像使用普通 SQL 一样创建视图
Posted
技术标签:
【中文标题】核心数据。是不是可以像使用普通 SQL 一样创建视图【英文标题】:Core Data. Is it possible creating a view like you would do with normal SQL核心数据。是否可以像使用普通 SQL 一样创建视图 【发布时间】:2014-09-11 15:03:41 【问题描述】:在普通 SQL 世界中,您将使用 Create View .... 在一个或多个表上定义视图,例如加入并已经成为一个小组。这在 Core data 中也有可能吗?
我问的原因是,我有一张包含详细信息的表格。每个明细记录都有两个键和一个数量。现在我需要在表格视图中显示按两个键分组的金额的总和 - 即该部分中的第一个键和第二个作为总和的正常条目。我认为 FRC 会起作用,但它没有分组(添加详细记录)。通过正常的获取请求,我可以分组并获取所有内容 - 但处理章节手册似乎需要做很多工作。所以我想,最好的办法是,我在 table 上放一个 view 并使用 FRC 将它带入 table view。那有意义吗?非常感谢任何帮助。
示例:
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】:所以我不确定是否有更简短的答案,但您可以这样做。 我假设第一列、第二列和第三列被称为: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.
【讨论】:
非常感谢您的回答,我希望有一个简单的方法来做到这一点。以上是关于核心数据。是不是可以像使用普通 SQL 一样创建视图的主要内容,如果未能解决你的问题,请参考以下文章
Access 可以像 SQL Server 一样生成 CREATE TABLE 脚本代码吗?