iOS Swift:将数组排序为三维数组

时间:2015-02-09 04:51:16

标签: ios swift cloudkit

我有一个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
}

不确定解决此问题的最佳方法。即使是一般指导也会受到赞赏。

1 个答案:

答案 0 :(得分:1)

概述:

第1步 - 选择排序算法。我发现insertion sort algorithm对我来说最容易理解,也很快。

第2步 - 决定您的数据结构。您可以使用二维数组。第一个维度代表您的日期,第二个维度代表您的记录。因此,数组可能被定义为List<List<CKRecord>>。因此,第一个条目将包含具有最早日期的所有记录的列表(List<CKRecord>)(可能是一个或多个)。

基本步骤

(带有二维数组)

  1. 首先从空数据结构开始
  2. 找出它应该进入哪个日期列表
  3. 如果日期尚不存在,您需要将日期排序到正确的位置,并添加一个新的数组/列表,并将新条目作为唯一内容
  4. 如果日期已存在,则需要记录排序到现有记录列表的正确位置
  5. 享受