【发布时间】:2020-04-29 22:55:23
【问题描述】:
我想找到实体属性中字符数最多的单词。我正在尝试创建一个排序描述符来比较字符串长度。代码可以编译,但是在执行 fetch 查询时出现错误 unsupported NSSortDescriptor selector: comparatorOfStringLengths。我尝试了NSSortDescriptor 的比较器块版本,但它不受支持。
query.sortDescriptors = [
NSSortDescriptor.init(key: "word", ascending: false, selector: #selector(NSString.comparatorOfStringLengths))
]
以下是比较器方法签名的最新版本。我也尝试使用带有两个参数的static func,并且使用Any 而不是String,我得到了相同的结果。我在func localizedStandardCompare(_ string: String) -> ComparisonResult 标准函数上建模了这个签名。
extension NSString {
@objc func comparatorOfStringLengths(_ b: String) -> ComparisonResult {
if self.length < b.length {
return .orderedAscending
}
if self.length > b.length {
return .orderedDescending
}
return .orderedSame
}
}
编辑:我调整/更正了选择器说明符的签名,但这也失败了:
#selector(NSString.comparatorOfStringLengths(_:)))
【问题讨论】:
标签: swift core-data nssortdescriptor