2015-02-09 58 views
0

我有一個CKRecords數組,我想將其排序爲三維數組。在第一個數組中是一個日期數組,並且每個日期都是一個名稱數組,其中名稱是一個介於0和4之間的Int。我成功地將我的記錄排序爲當前的二維數組(下面的代碼)。iOS Swift:將數組排序爲三維數組

名稱可以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

總體概述:

步驟1 - 選擇你的排序算法。我發現insertion sort algorithm對我來說是最容易理解的,而且速度也很快。

第2步 - 決定你的數據結構。您可以使用2維數組。第一維表示您的日期,第二維表示您的記錄。所以這個數組可能被定義爲這樣的List<List<CKRecord>>。因此,第一個條目將包含具有最早日期(可能是一個或多個)的所有記錄的列表(List<CKRecord>)。

基本步驟

(具有2 d陣列)

  1. 因此,開始與空數據結構
  2. 找出哪個日期列表它應該進入
  3. 如果日期還不存在,您需要將排序日期放入正確的位置並添加一個新的數組/列表w第i個新條目
  4. 如果日期已經存在的唯一內容,你需要排序記錄到現有的記錄列表的正確位置
  5. 享受
+0

感謝概述。我之前沒有使用二維數組。如果你有任何代碼示例,將非常感謝:) – colindunn 2015-02-09 05:21:52