CoreData 获取关系计数和按另一个关系分组的请求 (m2n)

2024-04-10

在我的 CoreData 模型中,我有一个使用中间实体建模的 n2n 关系:

Person [1<--] Person2Appointment [-->1] Appointment

The Person2Appointment实体看起来像这样:

@interface Person2Appointment : NSManagedObject

// attributes
@property (nonatomic, retain) NSNumber * participationState;

// relations
@property (nonatomic, retain) Person * person;
@property (nonatomic, retain) Appointment * appointment;
...
@end

(这两种关系也被建模为反向关系Person and Appointment实体)

我想获取所有人过去所有约会的计数。

在 SQL 中它看起来像:

select count(fk_appointment), fk_person 
  from person2appointment t0
  left join appointment t1 on t0.fk_appointment = t1.pk
where t1.date < ...
group by fk_person;

我尝试按以下方式将计数函数表达式与我的 fetch-request 一起使用:

 // create a fetch request for the Person2Appointment entity (category method)
NSFetchRequest* fetch = [Person2Appointment fetchRequest];
fetch.resultType = NSDictionaryResultType;

// count appointments
NSExpression* countTarget = [NSExpression expressionForKeyPath: @"appointment"];
NSExpression* countExp = [NSExpression expressionForFunction:@"count:" arguments: @[countTarget]];
NSExpressionDescription* countDesc = [[NSExpressionDescription alloc]init];
countDesc.name=@"count";
countDesc.expression = countExp;
countDesc.expressionResultType =  NSDecimalAttributeType;

fetch.propertiesToFetch = @["person", countDesc];
fetch.propertiesToGroupBy = ["person"];

fetch.predicate = ...;

打开 SQL 日志记录后,core-data 似乎执行了正确的语句:

SELECT t0.ZPERSON, COUNT( t0.ZAPPOINTMENT) 
  FROM ZPERSON2APPOINTMENT t0 
  JOIN ZAPPOINTMENT t1 ON t0.ZAPPOINTMENT = t1.Z_PK 
  WHERE  t1.ZSTARTDATE > ? GROUP BY  t0.ZPERSON 

但结果数组中的字典不包含数字计数,而是包含约会实体:

Printing description of d:
{
    count = "0xd0000000000c0018 <x-coredata://BABCBD2E-05AB-4AA5-AC2B-2777916E4EDF/Appointment/p3>";
    person = "0xd0000000000c0016 <x-coredata://BABCBD2E-05AB-4AA5-AC2B-2777916E4EDF/Person/p3>";
}

这是核心数据中的错误吗?

我在这里做错了什么吗?

或者还有其他方法可以实现这一目标吗?


在我看来,这就像 CoreData 中的一个错误,但是经过一些实验,我认为您可以通过修改计数表达式来实现您想要的目的,以计算属性你的Person2Appointment实体,而不是计算Appointment关系(计数应该相同,因为关系是一对一,除非有空值?):

NSExpression* countTarget = [NSExpression expressionForKeyPath: @"participationState"];
NSExpression* countExp = [NSExpression expressionForFunction:@"count:" arguments: @[countTarget]];

如果您确实需要担心空值,可以使用:

NSExpression *countTarget = [NSExpression expressionForEvaluatedObject];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CoreData 获取关系计数和按另一个关系分组的请求 (m2n) 的相关文章

  • 在 iOS 上使用 HEVC 编码器输出视频尺寸巨大

    我有一个项目 目前使用 H 264 编码器在 iOS 上录制视频 我想尝试在 iOS 11 中使用新的 HEVC 编码器来减小文件大小 但发现使用 HEVC 编码器会导致文件大小急剧膨胀 GitHub 上的一个项目显示了该问题 它使用 H
  • 当自定义子视图处理触摸时防止 UITableView 滚动

    在我的 iOS 应用程序中 有一个 UITableView 其中一个单元格中包含一个自定义子视图 该单元格是一个交互式视图 它处理触摸事件 touchesBegan touchesEnded touchesMoved 以更新自身 问题是 当
  • 如何在 SQLite 中替换字符串?

    如何更新具有以下内容的表列 var mobile 233KKFSDK3234 Documents Page jpg 并将其替换为 Documents Page jpg 在 SQLite 中 注意 所有文字 除了 Documents 是动态的
  • 无法安装企业应用程序 - 此配置文件无法安装在此设备上

    我正在设置 Jenkins 来构建应用程序的企业版本 以便在我们的内部应用程序商店中分发 如果我将应用程序存档在 Xcode 中 然后在手机上下载内置的 ipa 则应用程序安装不会出现任何问题 但是当我使用 Jenkins 生成的具有相同私
  • AppDelegate 的变量用作全局变量不起作用

    我想使用我的 AppDelegate 来存储任何其他类都可以访问的对象 我已经像这样声明了这个 AppDelegate interface MyAppDelegate UIResponder
  • CMSampleBufferSetDataBufferFromAudioBufferList 返回错误 12731

    我正在尝试捕获应用程序声音并将其传递给 AVAssetWriter 作为输入 我正在设置音频单元的回调以获取 AudioBufferList 问题始于将 AudioBufferList 转换为 CMSampleBufferRef 它总是返回
  • malloc:***错误:已释放对象的校验和不正确 - 对象可能在释放后被修改

    我的 iOS 应用程序有一个大问题 它有时会崩溃 而没有详细的调试错误 堆栈跟踪为空 这是堆栈跟踪中仅有的两行 UIApplicationMain 中的 符号存根 UIHostedTextServiceSession DismissText
  • 使用 UIKeyCommand 检测删除键

    任何人都知道如何使用检测 删除 键UIKeyCommand在 iOS 7 上 当人们在使用 Swift 时遇到问题时 我认为用 Objective C 和 Swift 编写一个小型的 完整的例子可能是一个很好的答案 请注意 Swift 没有
  • 核心数据:为什么必须调用重新加载数据才能使我的应用程序运行?

    我花了整个晚上调试一个简单的应用程序 该应用程序从网络检索一张图像 是的 是的 旨在让我的生活更轻松 并将其显示在表格视图中 我这样做是为了练习学习核心数据 在我修复它之前 错误消息显示如下 2012 09 30 06 16 12 854
  • 你如何在react-native中实现捏合缩放?

    我一直在研究 PanResponder 我当前的工作假设是 我将检测是否有两个触摸正在向外移动 如果是 则增加元素大小onPanResponderMove功能 这似乎是一种混乱的方法 有没有更顺畅的方法呢 如果您只需要简单的捏缩放功能 只需
  • ios Vision VNImageRequestHandler方向问题

    我正在尝试使用相机通过相机检测脸部VNImageRequestHandler iOS 愿景 当我在横向模式下用相机指向照片时 它会检测到面部 但方向模式相反 let detectFaceRequestHandler VNImageReque
  • UICollectionReusableView 方法未被调用

    我希望我的部分位于UICollectionView有一个带有图像的标题 我已按照以下步骤操作 在故事板中 分配了一个标题作为我的附件UICollectionView 给它一个标识符 创建了一个子类UICollectionReusableVi
  • 如何更改 UINavigationController 后退按钮名称?

    我有一个UIViewController我正在从第一个视图控制器导航到第二个视图控制器 我想更改显示在navigationcontroller为了回去 SecondViewController secondController Second
  • UITextView:内存使用量巨大

    我在 UITextView 中遇到了内存使用过多的问题 我正在将 50Kb ascii 文本文件加载到 NSString 中 并将其分配给应用程序中空 UITextView 组件的 text 属性 这立即使我的内存占用量增加了 100Mb
  • 将捕获的图像精确裁剪为 AVCaptureVideoPreviewLayer 中的外观

    我有一个使用 AV Foundation 的照片应用程序 我使用 AVCaptureVideoPreviewLayer 设置了一个预览层 它占据了屏幕的上半部分 因此 当用户尝试拍照时 他们只能看到屏幕上半部分看到的内容 这很好用 但是当用
  • 为每行 NSTableView 文本着色

    我有一个 NSTableView 它显示我拥有的对象数组 对于每个对象 行 我想根据在每个对象上运行的函数的结果来更改显示的文本的颜色 因此 例如表中存在于另一个列表 或其他一些要求 中的所有对象 我想以绿色文本显示它们 不存在的对象以红色
  • 如何从 Firebase 同步检索数据?

    我有两个集合 即用户和问题 根据使用 userId 登录的用户 我检索currQuestion价值来自users收藏 基于currQuestion值 我需要检索question来自 Firebase 的文档Questions收藏 我使用下面
  • 如何在 Swift 中创建 UIAlertView?

    我一直在努力在 Swift 中创建 UIAlertView 但由于某种原因我无法得到正确的语句 因为我收到此错误 找不到接受提供的 init 重载 论点 我是这样写的 let button2Alert UIAlertView UIAlert
  • 断点条件错误

    我已经根据条件设置了断点 event name isEqualToString Some Name 这很好用 但是 当我尝试添加另一个带有条件的断点时 part name isEqualToString Some Value With A
  • 如何将unix时间戳转换为iphone中的nsdate [重复]

    这个问题在这里已经有答案了 可能的重复 从 Unix 时间戳创建 NSDate https stackoverflow com questions 5827240 create nsdate from unix timestamp 我有一个

随机推荐

  • 使用 Core Plot 和 Swift 绘制多个散点图

    我正在尝试找到一种方法将两个不同的散点图添加到单个图表中 但到目前为止我还无法做到 我在 Objective C 中找到了一些示例 但在 Swift 中没有找到任何示例 只有 CorePlot 2 1 版本中的 Scatterplot 示例
  • Android 上的 EditText 中只有文本吗?

    我只想在 Android 应用程序的 edittext 中输入文本 输入 例如 仅输入 文本 A gt Z 不允许输入数字或特殊字符 请给我一个想法 应该怎么做 非常感谢 试试这个方法 android digits abcdefghijkl
  • 模拟外部 API 以使用 Python 进行测试

    Context 我正在尝试为查询外部 API 的函数编写测试 这些函数向 API 发送请求 获取响应并处理它们 在我的测试中 我想使用本地运行的模拟服务器来模拟外部 API 到目前为止 模拟服务器已成功运行并响应自定义 GET 查询 问题
  • 如何垂直分割250k列的文件?

    我需要根据大小 首选 或列数将 250k 的文件拆分为几个 5 块 我知道split命令用于按行拆分 但不知道是否有类似的函数用于按列拆分 我的文件中的列数不均匀 因此块不能具有相同的列数 Input AA BB CC DD EE FF G
  • Groupby 过滤器,基于连续序列排序以及 ID 和日期列

    我有一个数据框 如下所示 ID Status Date 0 1 F 2017 06 22 1 1 M 2017 07 22 2 1 P 2017 10 22 3 1 F 2018 06 22 4 1 P 2018 08 22 5 1 F 2
  • jar 名称中的版本

    当我将 maven 项目导入 Intellij 时 它生成的 jar 文件不包含版本 但是maven生成的jar有name version jar格式 所以我最终得到了两个 jar 文件 一个有版本 另一个没有版本 我当然可以在 Intel
  • Javascript:关闭字符串中打开的 HTML 标签

    我有一个包含 HTML 代码的 JavaScript 字符串 我显示它 并根据字数附加了一个阅读更多 更少切换器 问题是 当我缩小 HTML 代码时 它可能有开放标签 假设 p A computer is a general purpose
  • 使用 MySQL 实现物化视图(汇总表)的首选方法

    我正在工作中开发一个项目 我需要为其创建和维护汇总表出于性能原因 我相信正确的术语是物化视图 我这样做有两个主要原因 非规范化 我尽可能地规范化表格 因此 在某些情况下 我必须连接许多表才能提取数据 我们使用 MySQL Cluster 它
  • 如何使用swift在表格视图中实现图像的延迟加载

    我想使用 swift 对我的表视图使用延迟加载概念 在我的表格视图中 我显示了多个包含产品图像和产品名称的单元格 请帮助我找到解决方案 旧的解决方案 因为你没有显示任何代码 这是给您的示例 func tableView tableView
  • 如何在运行时创建 celery 队列,以便工作人员拾取发送到该队列的任务?

    我正在使用 django 1 4 celery 3 0 rabbitmq 为了描述该问题 我的系统中有许多内容网络 并且我需要一个队列来处理与每个网络相关的任务 然而 内容是在系统运行时动态创建的 因此我需要动态创建队列并让现有工作人员开始
  • CSS 变量中的 CSS calc() 行为

    我对使用 calc 设置 CSS 变量的行为感到好奇 Example test halfWidth calc 100 2 现在 如果 test元素 比如说div 宽 500px 我想要 halfWidth变量设置为 250px 但是 据我所
  • 急切地处置 ManualResetEvent

    我有一个类 它允许其他线程等待 直到它使用 a 完成操作ManualResetEventSlim 操作通常很简短 这个类没有明确的生命周期 因此没有一个地方可以轻松关闭该事件 相反 我想在事件完成后立即关闭该事件 一旦收到信号 并且在任何等
  • 在 Android 中滚动 listView 时选定的列表项颜色会移动

    在我的 Android 应用程序中 我使用列表视图 列表视图的代码如下
  • 在Python中将文本输出到多个终端

    我使用Python和ArchLinux 我正在用 Python 编写一个简单的人工智能作为学校项目 因为这是一个学校项目 并且我想清楚地演示它在做什么 所以我的目的是有一个不同的终端窗口来显示每个子进程的打印输出 一个终端显示句子如何被解析
  • 将画布设置为背景 - Javascript [重复]

    这个问题在这里已经有答案了 我试图弄清楚如何将我创建的画布转换为 HTML 正文的背景图像 谢谢
  • 如何使用样条线绘制 Cox 风险模型

    我有以下模型 coxph Surv fulength mortality 1 pspline predictor 其中 fulength 是随访时间 包括死亡率 predictor 是死亡率的预测因子 上面命令的输出是这样的 coef se
  • R 直方图中的确切箱数

    我在 R 中制作直方图时遇到困难 问题是我告诉它制作 5 个容器 但它制作了 4 个 我告诉它制作 5 个 它制作了 8 个 data lt c 5 28 14 64 37 25 78 9 44 92 8 96 19 22 34 81 33
  • Excel:列出 2 个数字之间的数字

    我想知道是否有人知道列出 2 个值之间的所有数字的公式 例如 如果单元格 F2 中有 12 而 G2 中有 17 我想要一个显示 13 14 15 16 的公式在单元格 H2 中 Thanks 使用 Excel 工作表函数无法完成此操作 为
  • SQL Server 2000 相当于 ON DUPLICATE KEY?

    SQL Server 2000 是否有与 MySQL ON DUPLICATE KEY 子句等效的功能 这个答案 https stackoverflow com questions 1197733 does sql server offer
  • CoreData 获取关系计数和按另一个关系分组的请求 (m2n)

    在我的 CoreData 模型中 我有一个使用中间实体建模的 n2n 关系 Person 1 lt Person2Appointment gt 1 Appointment The Person2Appointment实体看起来像这样 int