iOSアレイモデルの並べ替え

 

 

@interface BookCityBookModel : NSObject

@property (nonatomic, copy) NSString bookId;


@property (nonatomic, copy) NSString *bookName;

@end

1.単一の属性に従って昇順で並べ替えます

self.dataArray = [NewMembersModel mj_objectArrayWithKeyValuesArray:response[@"data"]];
// 排序key, 某个对象的属性名称,是否升序, YES-升序, NO-降序
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"bookName" ascending:YES];
// 排序结果
self.tempArr = [self.dataArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];

2.複数の属性に従って昇順と降順で並べ替えます 

self.dataArray = [NewMembersModel mj_objectArrayWithKeyValuesArray:response[@"data"]];
// 排序key, 某个对象的属性名称,是否升序, YES-升序, NO-降序
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"bookName" ascending:YES];
NSSortDescriptor *sortDescriptor1 = [NSSortDescriptor sortDescriptorWithKey:@"bookId" ascending:NO];
// 排序结果
self.tempArr = [self.dataArray sortedArrayUsingDescriptors:[NSArray arrayWithObjects:sortDescriptor, sortDescriptor1, nil]];

 

sortArrayUsingDescriptorsについて注意すべき点が1つあります。もちろん、sortUsingDescriptorsの変数配列も存在します。ソートに対応するキー値を選択すると、通常は数値ソートであり、キーに対応する値をNSString型にすることはできません。キーに対応する値がNSStringタイプの場合、次のメソッドを使用して変換する必要があります。

[self.bookArray sortUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2){
		BookCityBookModel *mode1 = obj1;
		BookCityBookModel *mode2 = obj2;
		if ([mode1.bookId integerValue] < [mode2.bookId integerValue]){
			return NSOrderedAscending;

		}else{
				return NSOrderedDescending;
			}
	}];
	NSLog(@"%@",self.bookArray);
	for (int i = 0; i<self.bookArray.count; i++) {
		BookCityBookModel *mode = self.bookArray[i];
		NSLog(@"%@",mode.bookId);
	}

 

 

 

 

 

おすすめ

転載: blog.csdn.net/zjpjay/article/details/88406748