我有3个阵列
createdAt = [someNSDate1, someNSDate2, someNSDate3]
customerId = ["a1", "h5", "c2"]
age = [21, 8, 60]
如何根据其中一个元素对这些数组进行排序?
例如:如果根据NSDate对customerId[0] = c2
进行排序,并且某些NSDate3是最近的日期,我如何确保age[0] = 60
和createdAt
?
答案 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 }