与 Core Data 和 Swift 比较不区分大小写

Case Insensitive Compare with Core Data and Swift

以下代码无效:

let sortDescriptor = NSSortDescriptor(key: "name", ascending: true, selector:"caseInsensitiveCompare")

并报错如下: 'NSInvalidArgumentException',原因:'unsupported NSSortDescriptor selector: caseInsensitiveCompare'

似乎在 Objective-C 中运行良好。关于为什么会这样有什么想法吗?

编辑:似乎 Core Data/SQLite 无法做到这一点。在那种情况下,最好的选择是获取数组然后在代码中对其进行排序吗?

选择器是caseInsensitiveCompare:,带冒号,可以和Core Data一起使用。

冒号在那里是因为该方法(NSString 的实例方法)接受一个参数(要比较的字符串)。

作为可与 Core Data 和 SQLite 一起使用的排序选择器列表 商店可以在 Persistent Store Types and Behaviors 核心数据编程指南

Swift 3 - 5.0 语法

let sortDescriptor = NSSortDescriptor(key: "KeyName", ascending: true, selector: #selector(NSString.caseInsensitiveCompare))

Swift 5、SwiftUI语法

self._contacts = FetchRequest(
            entity: Contact.entity(),
            sortDescriptors: [
                NSSortDescriptor(key: "name", ascending: true, selector: #selector(NSString.caseInsensitiveCompare(_:)))
            ],
            predicate: predicate
        )