基于struct属性对NSArray进行排序

时间:2011-08-04 02:32:51

标签: objective-c

我有一个NSArray对象。

每个对象都有一个属性struct LOCATION,用于存储int x和int y。

LOCATION表示物体在10x10板上的位置。

我想对从左上角(0,0)位置开始向下到右下角(9,9)位置的NSArray对象进行排序,先排序每行中的每个对象

最简单的方法是什么?

1 个答案:

答案 0 :(得分:4)

您有几个选项,所有选项都列在NSArray Class Reference中的“排序”下。我建议你将比较方法添加到存储在数组中的类(称之为compareTo:或类似的东西)并使用sortedArrayUsingSelector:。代码看起来如下所示:

// In MyObject.m
- (NSComparisonResult)compareTo:(MyObject *)other {
  if (self.location.y < other.location.y && self.location.x < other.location.x) {
    return NSOrderedAscending;
  } else if (self.location.y == other.location.y && self.location.x == other.location.x) {
    return NSOrderedSame;
  } else {
    return NSOrderedDescending;
  }
}

// In some .m file.
NSArray *sortedArray = [objects sortedArrayUsingSelector:@selector(compareTo:)];