对iOS中包含字母数字字的数组进行排序
我有一个包含10个元素的数组,叫做products,默认情况下是排序的,这是当前的日志对iOS中包含字母数字字的数组进行排序,ios,iphone,objective-c,sorting,nssortdescriptor,Ios,Iphone,Objective C,Sorting,Nssortdescriptor,我有一个包含10个元素的数组,叫做products,默认情况下是排序的,这是当前的日志 for (int i=0;i<products.count; i++) { NSLog(@"%@",products[i]); } 我需要按以下顺序对其进行排序: Product1 Product2 Product3 Product4 Product5 Product6 Product7 Product8 Product9 Product10 我目前的方法是扫描出数字并基于此进行排序,我想
for (int i=0;i<products.count; i++)
{
NSLog(@"%@",products[i]);
}
我需要按以下顺序对其进行排序:
Product1
Product2
Product3
Product4
Product5
Product6
Product7
Product8
Product9
Product10
我目前的方法是扫描出数字并基于此进行排序,我想知道在iOS中是否有其他方法或默认方法可以做到这一点,或者我应该坚持我目前的方法,扫描每个元素中的数字,然后进行排序???您可以使用此代码对数组进行排序。用于搜索字符串中的数值
NSArray * products = [[NSArray alloc] initWithObjects:@"Product1",
@"Product10",
@"Product2",
@"Product3",
@"Product4",
@"Product5",
@"Product6",
@"Product7",
@"Product8",
@"Product9",
nil];
products = [products sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [(NSString *)obj1 compare:(NSString *)obj2 options:NSNumericSearch];
}];
NSLog(@"products : %@", products);
和日志显示:
products : (
Product1,
Product2,
Product3,
Product4,
Product5,
Product6,
Product7,
Product8,
Product9,
Product10
)
有关更多详细信息,您可以更改产品模块以包含int属性,而不是在创建产品对象时设置int值。之后,只需使用此值进行排序。这是不正确的。你检查过你的代码吗?返回产品==(产品1、产品10、产品2、产品3、产品4、产品5、产品6、产品7、产品8、产品9)是的,我在发布我的答案之前检查过。当时它返回的值正确吗?这叫做聪明的回答。。thanks@i_Looser谢谢……:)使用
NSNumericSearch | nscaseinsensitivisearch
应该确保大写字母也不会影响排序
products : (
Product1,
Product2,
Product3,
Product4,
Product5,
Product6,
Product7,
Product8,
Product9,
Product10
)
NSSortDescriptor *sortDesc = [[NSSortDescriptor alloc]initWithKey:@"YourKeyName" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
self.products = [[self.products sortedArrayUsingDescriptors:[NSArray arrayWithObjects:sortDesc, nil]] mutableCopy];