iOS*_*evp 2 sorting objective-c ios
我有三个数组,priceArray,nameArray和discountArray.我在tableView中显示这些数组值.每个单元格都有价格,名称,折扣.
我想通过Price Low to High对列表进行排序,反之亦然,nameArray和discountArray中的项目需要根据价格排序进行排序.
同样,我希望按名称从AZ排序,反之亦然,并相应地对价格和折扣进行排序.
1 cell -- 20,xxx,10%
2 cell -- 10,zzz,10%
3 cell -- 150,aaa,0%
4 cell -- 100,hhh,15%
By Price Low to High
10,zzz,10%
20,xxx,10%
100,hhh,15%
150,aaa,0%
By Name A-Z
150,aaa,0%
100,hhh,15%
20,xxx,10%
10,zzz,10%
Run Code Online (Sandbox Code Playgroud)
帮我这样排序.
你不能用3个独立的阵列做你想要的.您需要将所有信息收集到模型对象中.
@interface Product:NSObject
@property NSString *name;
@property NSNumber *price;
@property NSNumber *discount;
@end
@implementation Product
//this is empty
@end
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用它NSSortDescriptor来排序数组Product.
例如价格从低到高.
NSSortDescriptor *priceSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"price" ascending:YES];
NSArray *sortedArray = [productArray sortedArrayUsingDescriptors:@[priceSortDescriptor]];
Run Code Online (Sandbox Code Playgroud)
将ascending:参数更改NO为从高到低排序.将key:参数更改为@"name"按名称排序.
编辑
要创建模型对象数组,只需创建对象并用数据填充它.
Product *product = [Product alloc] init];
product.name = @"Widget";
product.price = @(3.65);
product.discount = @(.1);
Run Code Online (Sandbox Code Playgroud)
所以Widget价格为3.65美元,折扣10%
然后将其添加到可变数组中.
NSMutableArray *productArray = [NSMutableArray array]; //create array only once
for(thing in inboundInformation) {
Product *product = //make and populate new product
[productArray addObject:product];
}
Run Code Online (Sandbox Code Playgroud)
通常,您可以循环入站信息,例如JSON,并为每个创建一个对象Product,并将该对象添加到您的数组中进行演示.
| 归档时间: |
|
| 查看次数: |
655 次 |
| 最近记录: |