2016-10-12 3 views
0

У меня есть следующий массив:Возьмите самую высокую дату внутри массива объектов.

let messages = (fetchedResultsController.fetchedObjects as! [Message]) 

по существу, каждый элемент в этом массиве из объекта Message, где каждое сообщение имеет 5 атрибутов ядра данных. Примечательно, что в этом случае меня интересует атрибут timestamp, который имеет тип NSDate !!!!!!. Я хочу получить сообщение с максимальной датой внутри этого массива с помощью функции уменьшения. Пожалуйста, не предлагайте сначала сортировать сообщения. Я пытаюсь избежать этого. Спасибо !

+0

Если вы заинтересованы только в объекте с «наивысшая дата», то вы можете настроить запрос на выборку соответствующим образом (добавьте дескриптор сортировки и ограничьте количество выбранных элементов одним). Если у вас уже есть массив, то можно использовать 'max (by:)' с помощью пользовательского компаратора. Было бы интересно узнать, почему вы хотите использовать 'reduce'. –

+0

эй Мартин Р, как бы я использовал max (by:) в этом случае. Я не могу понять синтаксис. Спасибо за ваш ответ. – slimboy

ответ

2

Не знаю, почему вы хотели бы использовать сократить, но я думаю, что это будет работать и подходит с тем, что вы ищете (предполагая, что Swift 3):

let result = messages.max(by: {$0.timeStamp < $1.timeStamp}) 
+0

спасибо, приятель, именно то, что он ищет! – slimboy

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