不区分大小写对 Realm 结果进行排序 属性
Sort Realm results by case insensitive property
我正在按照名为 "alphabet" 的 属性 对结果进行排序,如下所示:
allArtists = Artist.allObjects().sortedResultsUsingProperty("alphabet", ascending: true)
如何排序不区分大小写?现在 "cop" 会出现在 "Cat".
之前
通常,您必须编写自定义比较方法:
sortedArray = [array ArrayUsingSelector:@selector(customCompare:)];
其中 customCompare 是您对象的一个方法:
- (NSComparisonResult)customCompare:(NSString*)string {
return [[string lowercaseString] compare:[self.string lowercaseString]];
}
你的情况很简单:
sortedArray = [array sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
如果您想保留使用 RLMResults
对象的好处,另一种方法是在您的模型上添加 属性 的不区分大小写的副本:
class Artist: RLMObject {
/// Some original property you want to sort by
dynamic var name = "" {
didSet {
// Keep the case-free property in sync
lowercaseName = name.lowercaseString
}
}
/// A new property just for case-insensitive sorting
dynamic var lowercaseName = ""
}
然后您可以在新的 属性 上排序:
let caseInsensitiveArtists = Artist.allObjects()
.sortedResultsUsingProperty("lowercaseName", ascending: true)
我正在按照名为 "alphabet" 的 属性 对结果进行排序,如下所示:
allArtists = Artist.allObjects().sortedResultsUsingProperty("alphabet", ascending: true)
如何排序不区分大小写?现在 "cop" 会出现在 "Cat".
之前通常,您必须编写自定义比较方法:
sortedArray = [array ArrayUsingSelector:@selector(customCompare:)];
其中 customCompare 是您对象的一个方法:
- (NSComparisonResult)customCompare:(NSString*)string {
return [[string lowercaseString] compare:[self.string lowercaseString]];
}
你的情况很简单:
sortedArray = [array sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
如果您想保留使用 RLMResults
对象的好处,另一种方法是在您的模型上添加 属性 的不区分大小写的副本:
class Artist: RLMObject {
/// Some original property you want to sort by
dynamic var name = "" {
didSet {
// Keep the case-free property in sync
lowercaseName = name.lowercaseString
}
}
/// A new property just for case-insensitive sorting
dynamic var lowercaseName = ""
}
然后您可以在新的 属性 上排序:
let caseInsensitiveArtists = Artist.allObjects()
.sortedResultsUsingProperty("lowercaseName", ascending: true)