2015-02-09 6 views
0

У меня есть массив CKRecords, который я хотел бы отсортировать в трехмерном массиве. Внутри первого массива находится массив дат, и каждая дата представляет собой массив имен, где имя представляет собой Int между 0 и 4. Я успешно сортирую свои записи в двухмерном массиве в настоящее время (код ниже).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 - выберите структуру данных. Вы можете использовать двумерный массив. Первое измерение представляет ваши даты, а второе измерение - ваши записи. Таким образом, массив может быть определен следующим образом: List<List<CKRecord>>. Таким образом, первая запись будет содержать список (List<CKRecord>) всех записей с самой ранней датой (может быть один или несколько).

Основные шаги

(с массивом в 2-D)

  1. Так начните с пустой структуры данных
  2. Выяснить, какой список Дата должна идти в
  3. Если дата еще не существует, вам необходимо указать сортировать дату в нужную позицию и добавить новый массив/список w Ith новой записи в качестве единственного содержания
  4. Если дата уже существует, вы должны рода рекорда в правильное положение уже существующий список записей
  5. Наслаждайтесь
+0

Спасибо за Обзор. Раньше я не использовал двухмерные массивы. Если у вас есть образцы кода, которые были бы очень оценены :) – colindunn

Смежные вопросы