Считывание значений из двух разных массивов для заполнения ячейки табличного представления затрудняет сортировку.Я рекомендую вам создать один объект, который содержит атрибуты продукта и цены, а затем сохранить эти объекты в одном массиве.Затем вы можете просто отсортировать массив с помощью специального метода сортировки, который сравнивает цены.
Пример класса продукта:
@interface Product : NSObject
{
NSString *productName;
NSString *price;
}
@property (nonatomic, retain) NSString *productName;
@property (nonatomic, retain) NSString *price;
Затем напишите метод, который может сортировать товары по цене:
products = [products sortedArrayUsingSelector(sortByPrice:)];
... который вызывает этот метод в реализации ваших продуктов:
- (NSComparisonResult)sortByPrice:(id)anObject
{
if (self.price < anObject.price) {
return NSOrderedAscending;
} else (if self.price > anObject.price) {
return NSOrderedDescending;
}
return NSOrderedSame;
}
Хранить продукты в одном массиве:
NSMutableArray *products;
И ваши значения ячеек будут установлены какобъект из одного отсортированного массива.
Создание продукта изменяется с:
[products addObject:@"Milk"];
[prices addObject:@"2.25"];
на следующее:
Product *newProduct = [[[Product alloc] init] autorelease];
[products addObject:newProduct];
[newProduct setProductName:@"Milk"];
[newProduct setPrice:@"2.25"];
И установка значений в ячейках изменяется сэто:
cell.textLabel.text=[productArray objectAtIndex:indexPath.row];
cell.detailTextLabel.text=[priceArray objectAtIndex:indexPath.row];
до этого:
cell.textLabel.text=(Product *)[products objectAtIndex:indexPath.row].productName;
cell.detailTextLabel.text=(Product *)[products objectAtIndex:indexPath.row].price;