从核心数据中获取名称并将其转换为大写

Posted

技术标签:

【中文标题】从核心数据中获取名称并将其转换为大写【英文标题】:Fetching names from core data and converting it to upper case 【发布时间】:2013-12-12 05:58:20 【问题描述】:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"salesRepName == %@",salesName]; [请求集合谓词:谓词]; 这是我的收获。是否可以从表中获取名称并直接转换为大写而不使用字符串?

【问题讨论】:

【参考方案1】:

不,这是不可能的。在核心数据获取请求中获取计算结果的唯一方法(据我所知)是使用NSExpressionDescription[NSExpression expressionForFunction:…], 并且不支持uppercaseString 函数。所以你必须转换值 获取它们后变为大写。

【讨论】:

【参考方案2】:

NSExpression 确实支持uppercase:,如下所示:

NSExpression(forFunction: "uppercase:", arguments: [NSExpression(forKeyPath: "name")]

我已经成功地将它与NSBatchUpdateRequest 一起使用,如下所示,将所有名称转换为大写而不获取记录:

let batchUpdateRequest = NSBatchUpdateRequest(entityName: "Person")
batchUpdateRequest.predicate = NSPredicate(value: true)

// Convert name to uppercase
batchUpdateRequest.propertiesToUpdate = ["name": NSExpression(forFunction: "uppercase:", arguments: [NSExpression(forKeyPath: "name")])]

batchUpdateRequest.resultType = .UpdatedObjectIDsResultType
try! self.context.executeRequest(batchUpdateRequest)

【讨论】:

以上是关于从核心数据中获取名称并将其转换为大写的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SqlDataReader 获取位值并将其转换为布尔值?

Excel中有没有办法获取一列并将其转换为连接字符串

如何将从输入字段获取的画布名称与Javascript中的画布合并?

如何从 std::string 中获取 2 个字符并将其转换为 C++ 中的 int?

C语言编写程序,将一个字符串中的大写字母转换为对应的小写字母,小写字母转换为对应的大写字母,并统计数

从服务器获取当前日期时间并将其转换为 c# 中的本地时间