为什么像这样排序数组不起作用?

时间:2016-03-25 09:24:49

标签: arrays swift

struct Home {
var street:String
var number:Int
}

func getHouse() -> [Home] {
var house = [Home]()

let house1 = Home(street: "Jacob Street", number: 26)
house.append(house1)

let house2 = Home(street: "High Road", number: 58)
house.append(house2)

let house3 = Home(street: "Zebra Close", number: 12)
house.append(house3)

return house
}

var houses = [Home]()
houses = getHouse()

houses.sort({$0.street < $1.street })

for i in 0..<houses.count {

print("\(houses[i].street)")
}

我试图在此示例中按街道按字母顺序对它们进行排序,或者如果需要,可能按数字排序。它们似乎仍然按照我的顺序保留,而不是按照我想要的字母顺序排列。

2 个答案:

答案 0 :(得分:4)

sort返回一个新数组,但是你没有对结果做任何事情。你可以做到

let sortedHouses = houses.sort {$0.street < $1.street }

houses.sortInPlace {$0.street < $1.street }

答案 1 :(得分:2)

您可以使用sortInPlace()

sort()返回一个新的已排序对象并保持接收器不变。

或者

let sortedHouses = houses.sort {$0.street < $1.street }