我需要在表視圖字母排序數據,而忽略數字,如:排序字符串,忽略號顯示在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];
}
我希望從現在這個陣列中的字典索引你能夠理解這一點。 :)