无法在领域 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事先做好。