2015-06-29 4 views
0

У меня есть массив как это:Как сортировать NSDate в Swift

selectedMarks : [StatDetails] = [ 
    StatDetails(dateRanges: [2015-05-29 09:30:00 +0000, 2015-05-29 10:30:00 +0000], hours: 1), 
    StatDetails(dateRanges: [2015-06-16 08:00:00 +0000, 2015-06-16 09:00:00 +0000], hours: 1), 
    StatDetails(dateRanges: [2015-06-10 15:00:00 +0000, 2015-06-10 16:00:00 +0000], hours: 1)] 

Как вы можете видеть, selectedMarks является массивом "StatDetails", который содержит 2 параметра:

1: dateRanges» : массив NSDate

2: Время работы:. целое число

Я пытаюсь выяснить, как отсортировать этот массив StatDetails первым элементом массива dateRanges

Я пытался с этим, но без успеха:

selectedMarks.sortInPlace({ $0.dateRanges < $1.dateRanges }) 

Любая помощь с этим ??

+0

если вы хотите отсортировать по первому элементу в массиве диапазонов дат, вы должны дать ему индекс так: '{$ 0.dateRange [0] <$ 1.dateRanges [0]} ' – fqdn

+0

@fqdn Я пробовал это раньше, но получаю ошибку компиляции' Не могу вызвать 'sort' с помощью списка аргументов типа '((_, _) -> _)' ' – Ruben

+0

Возможный дубликат http://stackoverflow.com/questions/26577496/how-do-i-sort-a-swift-array-contains-instance-of-nsmanagedobject-subclass-by: Вы должны сравнить даты с 'compare()' или реализовать протокол 'Comparable' для NSDate. –

ответ

2

Вот как я это сделал, спасибо за помощь!

selectedMarks.sortInPlace({ $0.dateRanges[0].compare($1.dateRanges[0]) == NSComparisonResult.OrderedAscending }) 
1

Мне удалось разобраться, как описано ниже.

selectedMarks.sortInPlace{ $0.dateRanges.timeIntervalSince1970 < $1.dateRanges.timeIntervalSince1970 }