我通过名为" alphabet"的属性对结果进行排序。像这样:
allArtists = Artist.allObjects().sortedResultsUsingProperty("alphabet", ascending: true)
如何使用不区分大小写的方式进行排序?现在"警察"将出现在" Cat"。
之前答案 0 :(得分:4)
如果您想保留使用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)
答案 1 :(得分:1)
通常,您必须编写自定义比较方法:
sortedArray = [array ArrayUsingSelector:@selector(customCompare:)];
customCompare是您对象的一种方法:
- (NSComparisonResult)customCompare:(NSString*)string {
return [[string lowercaseString] compare:[self.string lowercaseString]];
}
在你的情况下只是:
sortedArray = [array sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];