我有一个CKRecords数组,我想把它分成三维数组。在第一个数组中是一个日期数组,每个日期是一个名称数组,其中一个名称是0到4之间的Int。我已成功地将我的记录排序为当前的二维数组(下面的代码)。
可以使用record.objectForKey("Name") as Int
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(records) {
let created = exercise.objectForKey("startTime") as NSDate
if date == created {
let record = records[index] as CKRecord
recordForDate.append(record)
}
}
result.append(recordForDate)
}
return result
}
不确定解决此问题的最佳方法。即使是一般指导也会受到赞赏。
答案 0 :(得分:1)
概述:
第1步 - 选择排序算法。我发现insertion sort algorithm对我来说最容易理解,也很快。
第2步 - 决定您的数据结构。您可以使用二维数组。第一个维度代表您的日期,第二个维度代表您的记录。因此,数组可能被定义为List<List<CKRecord>>
。因此,第一个条目将包含具有最早日期的所有记录的列表(List<CKRecord>
)(可能是一个或多个)。
基本步骤
(带有二维数组)