NSSortDescriptor在对象的属性属性上

时间:2012-01-27 22:10:47

标签: iphone objective-c

我的班级结构如下:

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没有改变。如何使用此方法进行排序?感谢。

2 个答案:

答案 0 :(得分:3)

sortedArrayUsingDescriptors不会对指定的数组进行排序,它会创建一个新数组,对其进行排序并返回该数组。  所以你的代码必须是:

 NSArray *mySortedArray = [targetArray sortedArrayUsingDescriptors:sortDescriptorArray];

答案 1 :(得分:0)

如果使用NSMutableArray,您将更加灵活。在这种情况下,您可以使用:

[targetArray sortUsingDescriptors:sortDescriptorArray];

这会将您的数组排序到位。它自iOS 2.0起可用