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

0lvr5msh  于 2022-11-26  发布在  iOS
关注(0)|答案(1)|浏览(103)

我有一个名为"Student"的实体,其中包含名为"firstName"和"lastName"的列。
| 名字|姓氏|
| - -| - -|
| 彼得|摩根|
| 阿当|海登|
| 安德鲁|贾尔斯|
现在,我已经创建了一个名为"compositeName"的新属性,它应该包含像"Peter Morgan"、"Adam Hayden"这样的联合名称。我如何在核心数据中使用NSBatchUpdateRequest来实现这一点?
批量更新后实体应如下所示
| 名字|姓氏|复合Name|
| - -| - -| - -|
| 彼得|摩根|彼得·摩根|
| 阿当|海登|亚当·海登|
| 安德鲁|贾尔斯|安德鲁·贾尔斯|
我在Web上搜索教程,但找不到具有动态值教程我找到了NSBatchUpdateRequest包含静态值解决方案

q1qsirdb

q1qsirdb1#

您可以在表达式的propertiesToUpdate部分通过NSExpression使用动态值,但不幸的是,似乎无法使用NSExpression执行字符串连接。
我会问您是否需要这个附加属性-为什么不将其作为托管对象上的计算变量:

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

这样可以防止复合名称和名称组件不同步。
另一种方法是查看Core Data中的派生属性,但同样,它们是基于NSExpression的,因此字符串连接不可用。

相关问题