2015-10-23 10 views
6

Qual è il metodo migliore e più efficiente per prelevare il valore massimo da una colonna Int?Qual è il metodo migliore e più efficiente per prelevare il valore massimo da una colonna Int?

Idea Un

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

Idea B

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

Oppure un'altra idea?

(Sì miei frammenti di codice restituirà solo l'oggetto con il più alto numero identificativo, non il valore effettivo)

+0

appena guardato in codice sorgente del regno e ci viene presentato un metodo 'max (property: String)'. Il risultato finale dovrebbe apparire come sotto 'Realm(). Objects (Books) .max (" id ")' OR 'realm.objects (Books) .max (" id ")' Ecco il link al fonte https://github.com/realm/realm-cocoa/blob/master/RealmSwift-swift2.0/Results.swift Si prega di correggermi Se ho torto :) – ProblemSlover

+0

:( Tutto quello che sto ottenendo è "il parametro generico 'U' non può essere dedotto." I documenti puntano sicuramente a ciò che suggerisci di essere possibile.Ho provato tutti i tipi di combinazioni per l'utilizzo di 'max' che posso pensare ma senza successo –

+0

Scusa se il mio suggerimento sembra ingenuo, ma Hai provato a farlo funzionare in questo modo? 'realm.objects (Libri) .max (" id ") come Int?' – ProblemSlover

risposta

12

credo che dovrebbe funzionare nel modo seguente

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

// Do some stuff 
} 

O semplicemente

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

Per completare la risposta, ho deciso di aggiungere il codice per recuperare il valore minimo: realm.objects(Books).min("id") as Int?

+0

Borbottare brontoloni. Come non ho capito che non avrò lo so. Forse è il momento di un altro caffè. Grazie. –

+1

@IanBradbury È venerdì .. ora di ritrovo. sera qui. Beh, per quanto ne so, è ancora mattina nel Regno Unito .. quindi aspetta :) – ProblemSlover

14

In seguito alla risposta di @ ProblemSlover. Ho creato una piccola app che getta 10000 record in una classe realm, chiamando una funzione per recuperare il valore massimo e utilizzandola per impostare la colonna ID. Volevo vedere alcune metriche (ho eseguito il test 3 volte per ottenere una media). Come puoi vedere la funzione MAX è 2,3 volte più veloce di quella ordinata/last e quasi 8 volte più veloce dell'ascesa/prima. A volte è solo bello sapere. :)

enter image description here

+0

PS Ha messo in su la tua risposta :) – ProblemSlover