根据一个数组Swift

时间:2015-11-03 14:06:46

标签: swift

我有3个阵列

createdAt = [someNSDate1, someNSDate2, someNSDate3]
customerId = ["a1", "h5", "c2"]
age = [21, 8, 60]

如何根据其中一个元素对这些数组进行排序?

例如:如果根据NSDate对customerId[0] = c2进行排序,并且某些NSDate3是最近的日期,我如何确保age[0] = 60createdAt

2 个答案:

答案 0 :(得分:2)

我建议改为包含所有数据的结构。

struct DataItem {
    let createdAt: NSDate
    let customerId: Int
    let age: Int
}

然后创建一个DataItems数组

编辑: 使用像这样的DataItems创建一个数组

var array : [DataItem]()

然后你可以像这样添加新的DataItem

array.append(DataItem(<the date>, <the customerid>, <age>));

答案 1 :(得分:1)

在这里,一个完整的例子,包括排序:

struct Item {
    let creationDate : NSDate
    let customerID : String
    let age : Int
}

let items = [
    Item(creationDate: NSDate(), customerID: "a1", age: 21),
    Item(creationDate: NSDate(), customerID: "h5", age: 8),
    Item(creationDate: NSDate(), customerID: "c2", age: 60)
]

extension NSDate : Comparable {}
public func <(lhs: NSDate, rhs: NSDate) -> Bool {
    return lhs.compare(rhs) == .OrderedAscending
}

let dateSorted = items.sort{ $0.creationDate < $1.creationDate }
let idSorted = items.sort{ $0.customerID < $1.customerID }
let ageSorted = items.sort{ $0.age < $1.age }