2015-11-10 14 views
5

Ho appena iniziato a utilizzare Realm per il caching nella mia app iOS. L'app è un negozio, con la merce. Mentre l'utente sfoglia la merce, aggiungo gli articoli al database. Tuttavia, poiché questi elementi non rimangono disponibili per sempre, non ha senso tenerli nel database oltre un certo punto, diciamo 24 ore. Esiste un modo preferito per lasciare scadere gli oggetti dopo un certo periodo di tempo? O sarebbe meglio aggiungere una proprietà data e interrogare questi oggetti su ogni avvio di app?Realm Pulizia di vecchi oggetti

risposta

10

Non esiste alcun meccanismo di scadenza cache predefinito in Realm stesso, ma come hai detto, è una questione relativamente banale di aggiungere una proprietà NSDate a ciascun oggetto e semplicemente eseguire una query per verificare gli oggetti la cui proprietà data è precedente a 24 ore periodicamente all'interno della tua app.

La logica potrebbe potenzialmente simile a questa in entrambe le lingue:

Objective-C

NSDate *yesterday = [[NSDate alloc] initWithTimeIntervalSinceNow:-(24 * 60 *60)]; 
RLMResults *itemsToDelete = [ItemObject objectsWhere:"addedDate < %@", yesterday]; 
[[RLMRealm defaultRealm] deleteObjects:itemsToDelete]; 

Swift

let yesterday = NSDate(timeIntervalSinceNow:-(24*60*60)) 
let itemsToDelete = Realm().objects(ItemObject).filter("addedDate < \(yesterday)") 
Realm().delete(itemsToDelete) 

spero che ha aiutato!

+1

Esiste un metodo simile per ottenere questo risultato per Android? –

Problemi correlati