如何将 NSBatchUpdateRequest 与动态值一起使用

How to use NSBatchUpdateRequest with dynamic values

提问人:Yagnesh Londhe 提问时间:11/22/2022 更新时间:11/23/2022 访问量:63

问:

我有一个名为“Student”的实体,它有名为“firstName”和“lastName”的列。我的现有实体如下所示

名字 姓氏
彼得 摩根
亚当 海登
安德鲁 贾尔斯

现在,我创建了一个名为“compositeName”的新属性,它应该包含联合名称,如“Peter Morgan”、“Adam Hayden”。如何在核心数据中使用 NSBatchUpdateRequest 实现此目的?

批量更新后,实体应如下所示

名字 姓氏 复合名称
彼得 摩根 彼得·摩根
亚当 海登 亚当·海登
安德鲁 贾尔斯 安德鲁·贾尔斯

我在网上搜索了教程,但找不到具有动态值的教程。我找到了NSBatchUpdateRequest包含静态值的解决方案

iOS Swift Objective-C 核心数据 nsbatchupdaterequest

评论


答:

0赞 jrturton 11/23/2022 #1

您可以在表达式的部分中使用动态值 via,但不幸的是,似乎无法使用 执行字符串连接。NSExpressionpropertiesToUpdateNSExpression

我会质疑您是否需要这个附加属性 - 为什么不将其设置为托管对象上的计算变量:

extension Student {
    var compositeName: String { firstName + lastName }
}

这样可以防止复合名称和名称组件不同步。

另一种方法是查看 Core Data 中的派生属性,但同样,它们是基于的,因此字符串连接不可用。NSExpression

评论

0赞 Yagnesh Londhe 11/25/2022
非常感谢@jrturton。我只是在学习 NSBatchUpdateRequest。本教程的大部分内容都是使用 NSBatchUpdateRequest 更新实体中多个记录的静态值。我对使用 NSBatchUpdateRequest 处理动态值有疑问,所以我发布了一个带有一个随机示例的问题。再次,非常感谢您的回复。