gpt4 book ai didi

ios - 如何在 objective-c 中以自定义方式对包含数字和字符的字符串数组进行排序?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:55:39 25 4
gpt4 key购买 nike

如何对包含数字和字符的字符串数组进行排序?我的 tableView 中有这个数据:

    - (void)viewDidLoad {
[super viewDidLoad];

self.tableData = [NSMutableArray array];

[self.tableData addObject:@"28 days"];
[self.tableData addObject:@"29 weeks"];
[self.tableData addObject:@"3 days"];
[self.tableData addObject:@"10 years"];
[self.tableData addObject:@"4 months"];
[self.tableData addObject:@"3 Weeks"];
[self.tableData addObject:@"27 Years"];
[self.tableData addObject:@"1 months"];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"Sort" style:UIBarButtonItemStyleBordered target:self action:@selector(sort)];}

我想以一种“自然”的方式对其进行排序,首先是天,然后是周、月等,同时 2 天在 5 天之前,等等。这可能吗?还是我必须为数周、数月、数年等创建单独的数组?

这是我使用的代码:

- (void)sort {

NSSortDescriptor *sorter = [[NSSortDescriptor alloc]initWithKey:nil ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
NSArray *sortArray = [NSArray arrayWithObject:sorter];
NSArray *sortedArray = [self.tableData sortedArrayUsingDescriptors:sortArray];
[self.tableData removeAllObjects];
[self.tableData addObjectsFromArray:sortedArray];
[self.tableView reloadData];}

但这并没有解决数字问题,而且不知何故甚至没有以正确的方式对数据进行排序^^

最佳答案

如果您创建一个自定义类来保存您的字符串而不是将它们直接放入数组中,将会有所帮助。然后,这个自定义类除了保存字符串外,还可以在持续时间内保存一个数值。该数值可用于轻松排序,也可在以后涉及用户选择和用户选择的使用时为您提供帮助。

或者,您可以使用其中一种排序方法,如 sortedArrayUsingComparator: 并提供代码来检查字符串中的文本和数字内容并计算出顺序(这并不容易)。

关于ios - 如何在 objective-c 中以自定义方式对包含数字和字符的字符串数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32113195/

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