2015-06-03 12 views
28

Sono assolutamente amorevole Realm (0.92) in combinazione con Swift ma ho una domanda sulla lettura di un oggetto dal database. Il mio obiettivo è recuperare un singolo oggetto con un ID univoco conosciuto (che è anche la chiave primariaModo corretto per recuperare un singolo oggetto dal database di Realm

Tutta la documentazione sembra orientata intorno alle query per più oggetti che vengono poi filtrati. In questo caso so l'ID oggetto e, poiché è noto per essere unico, vorrebbe recuperare direttamente

il mio approccio attuale è la seguente:..

Realm().objects(Book).filter("id == %@", prevBook.nextID).first 

Questo sembra pesante documentazione da versioni precedenti suggeriscono che c'è un modo più diretto ma non riesco a trovarlo nella documentazione

Il problema con il mio attuale approccio è che si blocca con un'eccezione sulla seguente funzione:

public func filter(predicateFormat: String, _ args: CVarArgType...) -> Results<T> 

L'eccezione è misteriosamente presentate come:

EXC_BAD_ACCESS (codice = 1, indirizzo = 0xedf)

Qualsiasi suggerimento è molto gradito.

Anticipando una serie di domande: mi hanno confermato che la sostituzione prevBook.nextID con una nota, buon ID non risolve il problema

+0

Non vi è alcun motivo per utilizzare Realm in iOS. È inferiore a CoreData in ogni modo concepibile. – RunLoop

risposta

51

object(ofType:forPrimaryKey:) è quello che stai cercando: Realm().object(ofType: Book.self, forPrimaryKey: prevBook.nextId). Non c'è modo più semplice di filter().first se devi cercare l'oggetto con qualcosa di diverso dalla chiave primaria.

+1

Grazie, esattamente quello che stavo cercando. Ho dovuto chiamarlo con objectForPrimaryKey (Book.self, chiave: prevBook.nextID) – Andy

+1

Qual è l'equivalente per Java (Android)? – mm2001

+1

... e cosa equivale anche a Javascript (React Native)? –

Problemi correlati