无法在领域 swift 中的日期之后进行过滤
Unable to filter after Date in Realm swift
我正在尝试对包含日期但没有成功的领域应用过滤器。
我发现无法传递 Date 对象,因为 %@ 格式需要一个 Foundation 对象作为参数,所以我对 NSDate 进行了转换。
let newDate = Date()
realm.objects(E.self)
.filter(String(format: "%@ <= %@", key, newDate as NSDate)).first
出现的问题是"Unable to parse the format string timestamp==2020-03-20 08:21:00 +0000"
key
是字段的名称,在本例中它是 "timestamp" 并且在模型上它具有日期类型。
欢迎任何意见。
谢谢
你应该使用:
.filter("\(key) <= %@", newDate as NSDate)
这是调用 Realm 的 filter
方法的重载,该方法接受格式和参数。
String(format:)
不适合在这里使用,因为它只是进行一般的字符串格式化。但是在这里,您希望根据 NSPredicate
格式的规则对日期进行格式化。另一方面,key
可以插入到字符串中,因为 table 列的名称不需要特殊格式。
如果 key
来自 UITextField
或类似的东西,那么您可能还需要提防注入攻击,并验证 and/or 转义 key
事先做好。
我正在尝试对包含日期但没有成功的领域应用过滤器。
我发现无法传递 Date 对象,因为 %@ 格式需要一个 Foundation 对象作为参数,所以我对 NSDate 进行了转换。
let newDate = Date()
realm.objects(E.self)
.filter(String(format: "%@ <= %@", key, newDate as NSDate)).first
出现的问题是"Unable to parse the format string timestamp==2020-03-20 08:21:00 +0000"
key
是字段的名称,在本例中它是 "timestamp" 并且在模型上它具有日期类型。
欢迎任何意见。
谢谢
你应该使用:
.filter("\(key) <= %@", newDate as NSDate)
这是调用 Realm 的 filter
方法的重载,该方法接受格式和参数。
String(format:)
不适合在这里使用,因为它只是进行一般的字符串格式化。但是在这里,您希望根据 NSPredicate
格式的规则对日期进行格式化。另一方面,key
可以插入到字符串中,因为 table 列的名称不需要特殊格式。
如果 key
来自 UITextField
或类似的东西,那么您可能还需要提防注入攻击,并验证 and/or 转义 key
事先做好。