lists = sharedAppCore.getRealm()
.objects(Event)
.filter("status = 1 OR status = 2 OR start_date >= \(NSDate())")
.sorted("end_date", ascending: false)
嚴格來說,上面的代碼是不一樣的你的最終代碼。
filter("status = 1 OR status = 2").filter(predicate).sorted("end_date", ascending: false)
^因爲這個謂詞相同,如下所示:
filter("(status = 1 OR status = 2) AND end_date >= %@", NSDate())
如果創建斷言所有OR
,你可以做到以下幾點:
filter("status = 1 OR status = 2 OR end_date >= %@", NSDate())
此外,如果你比較沒有幾小時,你應該從第一天起截斷小時。然後與截斷的日期進行比較。
類似如下:
let now = NSDate()
let calendar = NSCalendar.currentCalendar()
let component = calendar.components([.Year, .Month, .Day], fromDate: now)
let today = calendar.dateFromComponents(component)! // truncated time
然後使用截斷日期謂詞比較。
let now = NSDate()
let calendar = NSCalendar.currentCalendar()
let component = calendar.components([.Year, .Month, .Day], fromDate: now)
let today = calendar.dateFromComponents(component)! // truncated time
let lists = realm
.objects(Event)
.filter("status = 1 OR status = 2 OR end_date >= %@", today)
.sorted("end_date", ascending: false)
也許相關:http://stackoverflow.com/questions/29095950/swift-filter-by-nsdate-object-property – Larme