通过NSDate过滤Realm中的查询会抛出NSInvalidArgumentException

时间:2015-08-11 21:57:38

标签: ios swift predicate realm

我到处寻找,甚至用一些永远不会消失的病毒警告信息打到一些可疑的网站,我无法解决这个问题。

我只想尝试按日期过滤Results<T>对象:

let messages = realm.objects(RMChatMessage).filter("timestamp > \(date)) AND (timestamp <= \(to))"))

无论何时运行此行,都会引发以下情况:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse the format string "timestamp > 1970-01-01 00:00:00 +0000"'
*** First throw call stack:
(
    0   CoreFoundation                      0x000000010fba8c65 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x000000011174ebb7 objc_exception_throw + 45
    2   Foundation                          0x000000010ffb66bd _qfqp2_performParsing + 8495
    3   Foundation                          0x000000010ffb4526 +[NSPredicate predicateWithFormat:arguments:] + 46
...

我尝试使用NSDateFormatter格式,yyyy-MM-dd hh:mm:ssdate.description格式,使用NSPredicate(format:...)代替Result<T>.filter(...),等等,但没有任何效果。< / p>

这是Realm中的一些错误吗?

1 个答案:

答案 0 :(得分:8)

let messages = realm.objects(RMChatMessage).filter("timestamp > %@ AND timestamp <= %@", date, to)

NSPredicate对Swift字符串插值没有任何特殊处理,也不支持直接在格式字符串中写日期。