У меня есть массив CKRecords. Каждая запись имеет startTime
и Name
, среди прочих значений. То, что я хотел бы сделать, это отсортировать записи сначала с помощью уникального startTime
, а затем в течение каждого сортировки startTime по уникальному Name
.iOS Swift: сортировка массива в многомерный массив
Конечным результатом будет массив, который выглядит следующим образом (я думаю): records = [Date: [Name: [CKRecord]]]
Вот что я прямо сейчас:
func buildIndex(records: [CKRecord]) -> [[CKRecord]] {
var dates = [NSDate]()
var result = [[CKRecord]]()
for record in records {
var date = record.objectForKey("startTime") as! NSDate
if !contains(dates, date) {
dates.append(date)
}
}
for date in dates {
var recordForDate = [CKRecord]()
for (index, exercise) in enumerate(exercises) {
let created = exercise.objectForKey("startTime") as! NSDate
if date == created {
let record = exercises[index] as CKRecord
recordForDate.append(record)
}
}
result.append(recordForDate)
}
return result
}
let records = self.buildIndex(data)
вы можете написать 'г [e.time] = (г [e.time] ?? []) + [е]' в менее лаконичным способом? Попытка понять эту линию. – colindunn
Это просто добавить элемент в массив в словаре 'g'. – findall
Я получаю ошибку компилятора «Ожидаемый тип» для строки '.map {sorted (g [$ 0]!) {$ 0.name <$ 1.name}}'. Любая идея, что это значит? – colindunn