有一个这样的数组
(
{CompanyIco = "159.jpg";TVoucherId = 197;VName
= "bob";},
{CompanyIco = "005.jpg";TVoucherId = 203;VName
= "jane";},
{CompanyIco = "445.jpg";TVoucherId = 198;VName
= "jay";},
{CompanyIco = "652.jpg";TVoucherId = 199;VName
= "smith";},
{CompanyIco = "001.jpg";TVoucherId = 234;VName
= "tom";}
)
根据 CompanyIco排序
(
{CompanyIco = "001.jpg";TVoucherId = 234;VName
= "tom";},
{CompanyIco = "005.jpg";TVoucherId = 203;VName
= "jane";},
{CompanyIco = "159.jpg";TVoucherId = 197;VName
= "bob";},
{CompanyIco = "445.jpg";TVoucherId = 198;VName
= "jay";},
{CompanyIco = "652.jpg";TVoucherId = 199;VName
= "smith";}
)
根据TVoucherId排序
(
{CompanyIco = "159.jpg";TVoucherId = 197;VName
= "bob";},
{CompanyIco = "445.jpg";TVoucherId = 198;VName
= "jay";},
{CompanyIco = "652.jpg";TVoucherId = 199;VName
= "smith";},
{CompanyIco = "005.jpg";TVoucherId = 203;VName
= "jane";},
{CompanyIco = "001.jpg";TVoucherId = 234;VName
= "tom";}
)
根据VName排序
(
{CompanyIco = "159.jpg";TVoucherId = 197;VName
= "bob";},
{CompanyIco = "005.jpg";TVoucherId = 203;VName
= "jane";},
{CompanyIco = "445.jpg";TVoucherId = 198;VName
= "jay";},
{CompanyIco = "652.jpg";TVoucherId = 199;VName
= "smith";},
{CompanyIco = "001.jpg";TVoucherId = 234;VName
= "tom";}
)
排序的方法 the num.1
-(void)sortArray:(NSString *)sortType{
//make the call to sort the array using the function called alphabeticHometownSort
int reverseSort = NO;
if ([sortType isEqualToString:@"Company"])
[myMutableArray sortUsingFunction:alphabeticCompanySort context:&reverseSort];
else if ([sortType isEqualToString:@"TVoucherId"])
[myMutableArray sortUsingFunction:alphabeticTVoucherIdSort context:&reverseSort];
else if ([sortType isEqualToString:@"VName"])
[myMutableArray sortUsingFunction:alphabeticVNameSort context:&reverseSort];
}
/////////////////////////////////////
NSInteger alphabeticTVoucherIdSort(yourObject *obj1, yourObject *obj2, void *reverse)
{
if ((NSInteger *)reverse
== NO)
return [[obj2 TVoucherId] localizedCaseInsensitiveCompare:[obj1
TVoucherId]];
else
return [[obj1 TVoucherId] localizedCaseInsensitiveCompare:[obj2
TVoucherId]];
}
/////////////////////////////////////
NSInteger alphabeticCompanySort(yourObject *obj1, yourObject *obj2, void *reverse)
{
if ((NSInteger *)reverse
== NO)
return [[obj2 Company] localizedCaseInsensitiveCompare:[obj1
Company]];
else
return [[obj1 Company] localizedCaseInsensitiveCompare:[obj2
Company]];
}
/////////////////////////////////////
NSInteger alphabeticVNameSort(yourObject *obj1, yourObject *obj2, void *reverse)
{
//Be careful here. These are sorted alphabetically so 2 will come after 12.
//Im sure there is a replacement call for localizedCaseInsensitiveCompare that
//deals with Integers, but I am not sure what it is offhand.
if ((NSInteger *)reverse
== NO)
return [[obj2 VName] localizedCaseInsensitiveCompare:[obj1
VName]];
else
return [[obj1 VName] localizedCaseInsensitiveCompare:[obj2
VName]];
}
排序的方法 the num.2
NSSortDescriptor *alphaDesc = [[NSSortDescriptor alloc] initWithKey:@"TVoucherId" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
[myArray sortUsingDescriptors:[NSMutableArray arrayWithObjects:alphaDesc, nil]];
[alphaDesc release];
alphaDesc = nil;