我的班级结构如下:
TargetDetail : NSObject
@property Target *target
Target : NSObject
@property NSUInteger location
我有一个TargetDetail对象数组。我想按位置对它们进行排序。我试过这个:
NSSortDescriptor *byNum = [[NSSortDescriptor alloc] initWithKey@"target.location" ascending:YES];
NSArray *sortDescriptorArray = [[NSArray alloc] initWithObjects:byNum, nil];
[targetArray sortedArrayUsingDescriptors:sortDescriptorArray];
我的NSArray没有改变。如何使用此方法进行排序?感谢。
答案 0 :(得分:3)
sortedArrayUsingDescriptors不会对指定的数组进行排序,它会创建一个新数组,对其进行排序并返回该数组。 所以你的代码必须是:
NSArray *mySortedArray = [targetArray sortedArrayUsingDescriptors:sortDescriptorArray];
答案 1 :(得分:0)
如果使用NSMutableArray,您将更加灵活。在这种情况下,您可以使用:
[targetArray sortUsingDescriptors:sortDescriptorArray];
这会将您的数组排序到位。它自iOS 2.0起可用