核心数据。是不是可以像使用普通 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 一样创建视图的主要内容,如果未能解决你的问题,请参考以下文章

索引 C# 数据表以像使用 SQL 查询一样进行搜索

mybatis可以像hibernate一样自动创建表吗

Access 可以像 SQL Server 一样生成 CREATE TABLE 脚本代码吗?

在 RStudio 中,我可以像使用普通 R 数据框一样在 GUI 中直观地预览 Spark 数据框吗?

[大数据搜索数据库YDB]YDB新功能介绍-视图表

SQL入门经典之视图