2015-11-16 1 views
2

У меня есть массив объектов прямоугольника, который я заполнил в массиве rectangles. Каждый прямоугольник имеет различные свойства, текстуру, положение и так далее. Как я могу отсортировать массив прямоугольников так, чтобы объекты располагались в порядке возрастания позиции x. Свойство x position доступно, например, следующим образом.как отсортировать массив как объекты в порядке возрастания по положению x

rectangles[0].sprite.position.x 

Я открыт для решения этой проблемы, которая быстрее или эффективнее, чем сортировка.

ответ

3

Использование sort() способ. let sortedRectangles = rectangles.sort {$0.sprite.position.x < $1.sprite.position.x}

2

rectangles представляет собой массив с диапазоном (x,y):

func backwardsX(s1: (CGFloat,CGFloat), _ s2: (CGFloat,CGFloat)) -> Bool { 
     return s1.0 > s2.0 
    } 
    let result = rectangles.sort(backwardsX) 

Даже в одной строке:

let result = rectangles.sort({ s1, s2 in return s1.0 > s2.0 }) 

или

let result = rectangles.sort({ $0.0 > $1.0 })