iphone开发之数组排序

本文详细介绍了如何根据CompanyIco、TVoucherId和VName字段对数组进行排序,并提供了相应的排序方法实现。此外,还展示了两种排序方法:一种是通过自定义排序函数实现,另一种则是使用NSSortDescriptor类进行排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有一个这样的数组

(

 {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;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值