gpt4 book ai didi

ios - 按特定顺序对自定义对象进行排序

转载 作者:行者123 更新时间:2023-12-01 17:55:33 27 4
gpt4 key购买 nike

我试图找出一种基于我定义的自定义排序方案在数组中排序对象的整洁方式。

在下面的示例中,如果我为未排序数组中的每个对象打印出“someText”值,我想要的输出将是。

->Cow ->Cow ->Pig ->Dog



实现这种自定义排序的最佳选择是什么?
NSArray  *scheme=@[@"Cow",@"Pig",@"Dog"];


@interface TestObject : NSObject

@property (strong, nonatomic) NSString *someText;

@end


@interface Test : NSObject

@property (strong, nonatomic) NSMutableArray *unSortedObjects;

@end

@implementation Test

-(void)setup
{
TestObject *t1=[Test alloc]init];
t1.someText=@"Dog";
[unSortedObjects addObject:t1];
TestObject *t2=[Test alloc]init];
t2.someText=@"Pig";
[unSortedObjects addObject:t2];
TestObject *t3=[Test alloc]init];
t3.someText=@"Cow";
[unSortedObjects addObject:t3];
t4.someText=@"Cow";
[unSortedObjects addObject:t4];

}



@end

最佳答案

您可以使用 sortUsingComparator: NSMutableArray 中的函数。如果 order 仅取决于 'someText' 值,那么幼稚的实现可能如下所示:

[panels_ sortUsingComparator:^NSComparisonResult(TestObject* obj1, TestObject* obj2) {
NSArray *scheme = @[@"Cow",@"Pig",@"Dog"];
NSUInteger ix1 = [scheme indexOfObject:obj1.someText];
NSUInteger ix2 = [scheme indexOfObject:obj2.someText];
if (ix1 < ix2){
return NSOrderedAscending;
}
else if (ix1 > ix2){
return NSOrderedDescending;
}
return NSOrderedSame;
}];

关于ios - 按特定顺序对自定义对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18402520/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com