2016-10-12 2 views
0

Ich habe folgende Anordnung:Ergreifen Sie das höchste Datum in einem Array von Entitäten.

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

Wesentlichen jedes Element in diesem Array ist der Entität Nachricht, wobei jede Nachricht 5 Kerndatenattribute hat. Bemerkenswerterweise ist das Attribut, das mir in diesem Fall wichtig ist, der Zeitstempel vom Typ NSDate !!!!!!. Ich möchte die Nachricht mit dem maximalen Datum innerhalb dieses Arrays mit der Reduce-Funktion aufnehmen. Bitte schlagen Sie nicht vor, die Nachrichten zuerst zu sortieren. Ich versuche das zu vermeiden. Vielen Dank !

+0

Wenn Sie daran interessiert sind nur in dem Objekt mit der sind "Höchstdatum", dann können Sie die Abrufanforderung entsprechend konfigurieren (fügen Sie einen Sortierdeskriptor hinzu und beschränken Sie die Anzahl der abgerufenen Elemente auf eins). Wenn Sie das Array bereits haben, kann 'max (by:)' mit einem benutzerdefinierten Vergleicher verwendet werden. Es wäre interessant zu wissen, warum Sie 'reduce' verwenden möchten. –

+0

hey Martin R, wie würde ich max (by:) in diesem Fall verwenden. Ich kann die Syntax nicht herausfinden. Danke für Ihre Antwort. – slimboy

Antwort

2

nicht sicher, warum würden Sie wollen, reduzieren verwenden, aber ich denke, das funktioniert und passt mit dem, was Sie suchen (unter der Annahme Swift 3):

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

danke Kumpel, genau was ich suche! – slimboy

Verwandte Themen