gpt4 book ai didi

ios - 使用 NSSortDescriptor 将空白字符串放在排序末尾的简单方法?

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:16:27 24 4
gpt4 key购买 nike

我正在使用 NSSortDescriptorNSDictionary 项的 NSArray 进行排序。效果很好,正是我所需要的……除了我希望我的排序键具有空​​白值的字典项显示在排序列表的末尾。有没有办法轻松实现这一目标?还是我必须创建一些自定义排序功能?不,我不想只将它设置为 DESC 顺序...我希望排序后的结果看起来像 A、A、B、B、C、空白、空白。

最佳答案

在看到另一个使用自定义比较的示例后弄清楚了这一点。这是我最终得到的代码:

@interface NSString (CustomStatusCompare)
- (NSComparisonResult)customStatusCompare:(NSString*)other;
@end

@implementation NSString (CustomStatusCompare)
- (NSComparisonResult)customStatusCompare:(NSString*)other {
NSAssert([other isKindOfClass:[NSString class]], @"Must be a NSString");
if ([self isEqual:other]) {
return NSOrderedSame;
}
else if ([self length] > 0 && [other length] > 0) {
return [self localizedCaseInsensitiveCompare:other];
}
else if ([self length] > 0 && [other length] == 0) {
return NSOrderedAscending;
}
else {
return NSOrderedDescending;
}
}
@end



NSSortDescriptor *serviceTypeDescriptor =
[[NSSortDescriptor alloc] initWithKey:@"Service"
ascending:YES
selector:@selector(localizedCaseInsensitiveCompare:)];

NSSortDescriptor *locationDescriptor =
[[NSSortDescriptor alloc] initWithKey:@"Location"
ascending:YES
selector:@selector(customStatusCompare:)]; //using custom comparison here!

NSArray *descriptors = [NSArray arrayWithObjects:locationDescriptor, nameDescriptor, nil];
self.navArray = [self.navArray sortedArrayUsingDescriptors:descriptors];

因此,如果两个字符串都为空,则比较器返回 NSOrderedSame...如果两个字符串都为非空,则调用常规比较函数...如果只有一个字符串为空,它会反转该比较的正常顺序。瞧!

关于ios - 使用 NSSortDescriptor 将空白字符串放在排序末尾的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9743890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com