gpt4 book ai didi

iphone - NSSortDescriptor - 将 # 和数字推到列表末尾 - iphone xcode

转载 作者:行者123 更新时间:2023-12-03 18:39:18 25 4
gpt4 key购买 nike

我有一个表格 View ,显示按字母顺序排序的联系人并将其分为几个部分。

我正在使用 -

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:[dataSource keyName] ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];

然后,对于没有姓名的联系人,我使用#号作为他们的第一个字母,这样他们所有人都会被分在一组。

一切都很棒。我唯一想要的是将 # 部分推到表格的末尾,因为现在它显示在表格的开头。

有什么想法吗?

提前致谢

沙尼

最佳答案

执行此操作的最佳方法是使用 sortDescriptorWithKey:ascending:comparator: 方法创建您自己的自定义排序描述符。这使您可以创建自己的比较函数,并使用 block 指定该函数。

首先,创建一个比较函数。如果您从未programmed with blocks以前,现在是学习的时候了!

NSComparisonResult (^myStringComparison)(id obj1, id obj2) = ^NSComparisonResult(id obj1, id obj2) {

// Get the first character of the strings you're comparing
char obj1FirstChar = [obj1 characterAtIndex:0];
char obj2FirstChar = [obj2 characterAtIndex:0];

// Check if one (but not both) strings starts with a '#', and if so, make sure that one is sorted below the other
if (obj1FirstChar == '#' && obj2FirstChar != '#') {
return NSOrderedDescending;
} else if (obj2FirstChar == '#' && obj1FirstChar != '#') {
return NSOrderedAscending;
}
// Otherwise return the default sorting order
else {
return [obj1 compare:obj2 options:0];
}
};

现在您已经有了比较函数,您可以使用它来创建排序描述符:

NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:[dataSource keyName] ascending:YES comparator:myStringComparison];

您现在可以像使用其他排序描述符一样使用该排序描述符,并且您的列表会将 # 个项目排序到末尾!

关于iphone - NSSortDescriptor - 将 # 和数字推到列表末尾 - iphone xcode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4841798/

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