如何在 Realm swift 中过滤为当前日期创建的事件?

Posted

技术标签:

【中文标题】如何在 Realm swift 中过滤为当前日期创建的事件?【英文标题】:How do I filter events created for the current date in the Realm swift? 【发布时间】:2016-03-13 00:03:48 【问题描述】:

我尝试了类似下面的方法,但这是错误的。

let dtSource = datasource.filter("Create == NSDate()").count

更新:获取过滤器,将我的日期创建为字符串。

http://i.stack.imgur.com/8fLX9.png

http://i.stack.imgur.com/HDR2X.png

【问题讨论】:

查看question 和答案。 【参考方案1】:

Create == NSDate() 形式的查询将检查确切的日期相等性,它将与第二个进行比较。如果你想检查一个日期是否在给定的时间间隔之间,比如检查它是否在特定的一天,不管一天中的什么时间,你可以做一个BETWEEN检查:

let dtSource = datasource.filter("Create BETWEEN %@", [firstDate, secondDate]).count

更新:

这是获取当天所有日期模型的完整代码示例:

import RealmSwift

class Event: Object 
    dynamic var date = NSDate()


let todayStart = Calendar.current.startOfDay(for: Date())
let todayEnd: Date = 
  let components = DateComponents(day: 1, second: -1)
  return Calendar.current.date(byAdding: components, to: todayStart)!
()
events = realm.objects(Event.self).filter("date BETWEEN %@", [todayStart, todayEnd])

【讨论】:

您好,我已经成功了,但为此我需要在工作台上用字符串保存日期。 let dtSource = datasource.filter("Create CONTAINS %@", valorBuscado).count 有没有办法在数据类型的列中进行相同的搜索或在搜索时将记录日期转换为字符串? let dtSource = datasource.filter(String(Create), "CONTAINS %@", valorBuscado).count 这样我还不能让它工作: let ondeBuscar = "Criacao" let stringBusca = ondeBuscar + " = CONTAINS %@" let predicate = NSPredicate(format: stringBusca, "2016-03- 13") 让 resultadoBusca = datasource.filter(predicate).count 您正在尝试在此处比较 cmets 中的日期字符串,这是错误的做法。我添加了另一个代码示例作为获取特定日期的日期模型的示例。我建议你阅读更多关于 NSPredicates 和 NSDates 的文档。以下是一些链接:realm.io/news/nspredicate-cheatsheet、developer.apple.com/library/mac/documentation/Cocoa/Conceptual/…、developer.apple.com/library/mac/documentation/Cocoa/Reference/… 感谢您的帮助 :) 获取过滤器,将我的日期创建为字符串。我将继续研究该主题以提高。

以上是关于如何在 Realm swift 中过滤为当前日期创建的事件?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Realm 选择当前项目以从 Swift 中的数组中删除它

在Realm过滤父母和子女 - Android

如何在 iOS swift 中使用文本字段过滤日期数组?

如何通过 NSDate 属性过滤 Realm 对象

在Swift中使用Realm进行过滤,给我一个对象数组,但是当打印一个属性时,它会给我一个空字符串

Realm (Swift):如何在迁移期间获取 MutableSet 数据?