我需要在表视图字母排序数据,而忽略数字,如:排序字符串,忽略号显示在UITableView的
- 123 test
- 939 urne
- 403 vase
目前,数据加载这样的:
- 939 urne
- 123 test
- 403 vase
什么是忽略数字的最佳选择?
我需要在表视图字母排序数据,而忽略数字,如:排序字符串,忽略号显示在UITableView的
- 123 test
- 939 urne
- 403 vase
目前,数据加载这样的:
- 939 urne
- 123 test
- 403 vase
什么是忽略数字的最佳选择?
您可以在词典中,像单独存储数据,
Array
(
{
"number" = 403
"text" = "vase"
},
{
"number" = 403
"text" = "vase"
}
)
那么你可以进行排序使用,
NSSortDescriptor * descriptor = [NSSortDescriptor sortDescriptorWithKey:@"text" ascending:YES];
[array sortUsingDescriptors:[NSArray arrayWithObject:descriptor]];
的最佳途径此
NSSortDescriptor *descriptor; = [NSSortDescriptor sortDescriptorWithKey:@"text" ascending:YES comparator:^(NSString *obj1, NSString *obj2) {
return [obj1 compare:obj2 :NSCaseInsensitiveSearch];
}];
[arrDocuments sortUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];
现在开始一个循环其中包含您希望排序的数组中的所有对象。假设数组的名称是originalArray
。
NSMutableArray *newArray = [[NSMutableArray alloc] init];
NSMutableArray *finalArray = [[NSMutableArray alloc] init];
for(int i = 0; i < originalArray.count; i++)
{
NSString *tempstr = [originalArray objectAtIndex:i]; // suppose it is 123 - abcd
NSString *newString = [[tempstr componentsSeparatedByCharactersInSet: [[NSCharacterSet letterCharacterSet] invertedSet]] componentsJoinedByString:@""];
NSDictionary *dict = [[NSDictionary alloc] init];
[dict setValue:@(i) forKey:@"num"];
[dict setValue:newString forKey:@"char"];
[newArray addObject:dict];
}
现在您可以排序newArray
: -
NSSortDescriptor * descriptor = [NSSortDescriptor sortDescriptorWithKey:@"char" ascending:YES];
[newArray sortUsingDescriptors:[NSArray arrayWithObject:descriptor]];
现在你可以(在关键NUM)
for(int j = 0; j<newArray.count ; j++)
{
NSDictionary *dict1 = [[NSDictionary alloc] init];
dict1 = [newArray objectAtIndex: j];
int number = [[dict1 objectForKey:@"num"] intValue];
NSString *str = [originalArray objectAtIndex:number];
//Now add this string in the finalArray.
[finalArray addObject:str];
}
我希望从现在这个阵列中的字典索引你能够理解这一点。 :)