我有一个NSArray对象。
每个对象都有一个属性struct LOCATION,用于存储int x和int y。
LOCATION表示物体在10x10板上的位置。
我想对从左上角(0,0)位置开始向下到右下角(9,9)位置的NSArray对象进行排序,先排序每行中的每个对象
最简单的方法是什么?
答案 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:)];