ios - 使用 NSSortDescriptor 将空白字符串放在排序末尾的简单方法?
<p><p>我正在使用 <code>NSSortDescriptor</code> 对 <code>NSDictionary</code> 项目的 <code>NSArray</code> 进行排序。效果很好,正是我需要的...除了我希望排序键具有空白值的字典项显示在排序列表的末尾。有没有办法轻松实现这一点?还是我必须创建一些自定义排序功能?不,我不想只是将其设置为 DESC 顺序...我希望排序结果看起来像 A、A、B、B、C、空白、空白。</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>在看到另一个使用自定义比较的示例后发现了这一点。这是我最终得到的代码:</p>
<pre><code>@interface NSString (CustomStatusCompare)
- (NSComparisonResult)customStatusCompare:(NSString*)other;
@end
@implementation NSString (CustomStatusCompare)
- (NSComparisonResult)customStatusCompare:(NSString*)other {
NSAssert(], @"Must be a NSString");
if () {
return NSOrderedSame;
}
else if ( > 0 && > 0) {
return ;
}
else if ( > 0 && == 0) {
return NSOrderedAscending;
}
else {
return NSOrderedDescending;
}
}
@end
NSSortDescriptor *serviceTypeDescriptor =
[ initWithKey:@"Service"
ascending:YES
selector:@selector(localizedCaseInsensitiveCompare:)];
NSSortDescriptor *locationDescriptor =
[ initWithKey:@"Location"
ascending:YES
selector:@selector(customStatusCompare:)];//using custom comparison here!
NSArray *descriptors = ;
self.navArray = ;
</code></pre>
<p>因此,如果两个字符串都为空,则比较器返回 NSOrderedSame...如果两个字符串都不为空,则调用常规比较函数...如果只有一个字符串为空,它会反转该比较的正常顺序。瞧!</p></p>
<p style="font-size: 20px;">关于ios - 使用 NSSortDescriptor 将空白字符串放在排序末尾的简单方法?,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/9743890/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/9743890/
</a>
</p>
页:
[1]