从核心数据中获取名称并将其转换为大写
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 获取位值并将其转换为布尔值?
如何将从输入字段获取的画布名称与Javascript中的画布合并?
如何从 std::string 中获取 2 个字符并将其转换为 C++ 中的 int?