2015-11-10 42 views
5

iOS uygulamasında önbelleğe almak için Realm'i kullanmaya başladım. App mal ile bir mağaza. Kullanıcı malları taradığında, öğeleri veritabanına ekliyorum. Ancak, bu öğeler sonsuza kadar kullanılabilir olmadığından, veritabanında belirli bir noktadan sonra onları tutmak için anlamlı değildir, diyelim ki 24 saat. Bir süreden sonra nesnelere sürenin dolması için tercih edilen bir yol var mı? Veya her bir uygulama lansmanında bir tarih özelliği eklemek ve bu nesneleri sorgulamak en iyisi olur mu?Realm Eski Nesneleri Temizleme

cevap

10

Realm'nin kendisinde varsayılan bir önbellek sona erme mekanizması yoktur, ancak dediğiniz gibi, her nesneye NSDate özelliği eklenmesi nispeten önemsiz bir meseledir ve yalnızca özelliği 24 saatten eski olan nesneleri denetlemek için bir sorgu gerçekleştirir. uygulamanızın içinde düzenli olarak.

mantık potansiyel olarak her iki dilde böyle bir şey görünebilir:

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) 

Ben yardımcı umut!

+1

Android için bunu başarmak için benzer bir yöntem var mı? –