2015-10-23 7 views
6

Was ist die beste und effizienteste Methode zum Abrufen des Maximalwerts aus einer Int-Spalte?Was ist die beste und effizienteste Methode zum Abrufen des Maximalwerts aus einer Int-Spalte?

Idea A

let maxId = realm.objects(Books).sorted("id").last 

Idea B

let maxId = realm.objects(Books).sorted("id", ascending: false).first 

Oder eine andere Idee?

(Ja, mein Code-Schnipsel wird nur mit der höchsten ID das Objekt zurückgeben, nicht der tatsächliche Wert)

+0

Gerade sah in der Quellcode von Reich und wird ein Verfahren 'max präsentiert (Eigenschaft: String)'. Das Endergebnis sollte wie folgt aussehen: 'Realm(). Objects (Books) .max (" id ")' ODER 'realm.objects (Bücher) .max (" id ")' Hier ist der Link zum Quelle https://github.com/realm/realm-cocoa/blob/master/RealmSwift-swift2.0/Results.swift Bitte korrigieren Sie mich Wenn ich falsch liege :) – ProblemSlover

+0

:( Alles was ich bekomme ist "Der generische Parameter 'U' konnte nicht abgeleitet werden." Die Dokumente weisen darauf hin, was Sie vorschlagen. Ich habe alle möglichen Kombinationen ausprobiert, um 'max' zu verwenden, aber ich habe keinen Erfolg. –

+0

Entschuldigung, wenn mein Vorschlag klingt naiv, aber Haben Sie versucht, es so zu arbeiten? 'realm.objects (Books) .max (" id ") als Int?' – ProblemSlover

Antwort

12

Ich glaube es auf folgende Weise funktionieren soll

if let maxValue = realm.objects(Books).max("id") as Int?{ 

// Do some stuff 
} 

Oder nur

let maxValue = realm.objects(Books).max("id") as Int? 

Um meine Antwort zu vervollständigen, habe ich beschlossen, den Code hinzuzufügen, um den minimalen Wert zu holen: realm.objects(Books).min("id") as Int?

+0

Grummel murren. Wie ich nicht bekommen habe, dass ich nev Er weiß es. Zeit für einen weiteren Kaffee vielleicht. Vielen Dank. –

+1

@IanBradbury Es ist Freitag .. Zeit für Hangout. Abend hier. So weit ich weiß, es ist immer noch Morgen in UK .. so festhalten :) – ProblemSlover

14

Im Anschluss an @ ProblemSlover die Antwort. Ich habe eine kleine App erstellt, die 10000 Datensätze in eine Realm-Klasse wirft - eine Funktion aufruft, um den Maximalwert abzurufen, und damit die ID-Spalte zu setzen. Ich wollte einige Metriken sehen (Ich habe den Test dreimal durchgeführt, um einen Durchschnittswert zu erhalten). Wie Sie sehen können, ist die MAX-Funktion 2,3-mal schneller als sortiert/zuletzt und fast 8-mal schneller als aufsteigend/zuerst. Manchmal ist es einfach gut zu wissen. :)

enter image description here

+0

PS Upvoted Ihre Antwort :) – ProblemSlover

Verwandte Themen