菜鸟教程小白 发表于 2022-12-13 12:18:19

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(], @&#34;Must be a NSString&#34;);
    if () {
      return NSOrderedSame;
    }
    else if ( &gt; 0 &amp;&amp; &gt; 0) {
      return ;      
    }
    else if ( &gt; 0 &amp;&amp; == 0) {
      return NSOrderedAscending;
    }
    else {
      return NSOrderedDescending;
    }
}
@end



NSSortDescriptor *serviceTypeDescriptor =
[ initWithKey:@&#34;Service&#34;
                           ascending:YES
                           selector:@selector(localizedCaseInsensitiveCompare:)];

NSSortDescriptor *locationDescriptor =
[ initWithKey:@&#34;Location&#34;
                           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]
查看完整版本: ios - 使用 NSSortDescriptor 将空白字符串放在排序末尾的简单方法?