Я создал NSMutableArray Объекта с помощью этого кодаКак сортировать NSMutableArray объекта в порядке возрастания или убывания
- (void)viewDidLoad
{
[super viewDidLoad];
NSArray * ary1 = [NSArray arrayWithObjects:@"01/07",@"02/07",@"03/07",@"04/07",@"05/07",@"06/07",@"07/07", nil];
NSArray * ary2 = [NSArray arrayWithObjects:@"First",@"Second",@"Third",@"Forth",@"Fifth",@"Sixth",@"Seventh", nil];
NSArray * ary3 = [NSArray arrayWithObjects:@"1000",@"2000",@"3000",@"4000",@"5000",@"6000",@"7000", nil];
tableAry = [[NSMutableArray alloc] init];
for (int i=0; i<ary1.count; i++) {
//cardSummry will hold the data and give back the model to store in array and we can find that value using model
DataModel *dataModel = [[DataModel alloc] init];
dataModel.date = [ary1 objectAtIndex:i];
dataModel.name = [ary2 objectAtIndex:i];
dataModel.ammount = [ary3 objectAtIndex:i];
[tableAry addObject:dataModel];
}
}
И это мой DataModel Класс
.H файл
#import <Foundation/Foundation.h>
@interface DataModel : NSObject
//this variable is used to get the data from array
@property (nonatomic,strong) NSString *date;
@property (nonatomic,strong) NSString *name;
@property (nonatomic,strong) NSString *ammount;
//this method will genarate a data model which will be added to array for future use
+ (id)cardSummary:(NSString*)date name:(NSString*)name ammount:(NSString*)ammount;
@end
. M файл
#import "DataModel.h"
@implementation DataModel
@synthesize date,name,ammount;
//this method will genarate a data model which will be added to array for future use
+ (id)cardSummary:(NSString*)date name:(NSString*)name ammount:(NSString*)ammount
{
DataModel *dataModel = [[self alloc] init];
[dataModel setDate:date];
[dataModel setAmmount:ammount];
[dataModel setName:name];
return dataModel;
}
@end
Теперь я хочу отсортировать его в соответствии с именем в этом массиве, который я видел. this Вопрос в SO, который выглядит как мой и использует его код ответа, чтобы решить мою проблему, но для меня это не помогло, что это не так.
[tableAry sortUsingDescriptors:
[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)]]];
NSLog(@"tableAry : %@",tableAry);
Так как я могу сортировать мой массив
Update
как @Martin R И @Rick сказал я есть Alloc мой массив, но теперь я получил эту ошибку.
*** Нагрузочное приложение из-за неперехваченное исключение 'NSInvalidArgumentException', причина: '- [DataModel caseInsensitiveCompare]: непризнанный селектор направил к экземпляру 0x7550850'
Если 'NSLog (@ "tableAry:% @", tableAry);' показывает 'NULL', тогда вы забыли выделить + init' tableAry'. –
Во-первых, исправьте свой заголовок, должен быть «сортирован». Затем попробуйте добавить 'tableAry = [NSMutableArray array];' перед циклом for в viewDidLoad. Вы должны инициализировать NSMutableArray перед добавлением к нему объектов. – Rick
@MartinR см. Мое обновление. Я выделил свой массив, но столкнулся со второй ошибкой. –