2015-08-11 4 views
4

Я искал всюду, даже попав на некоторые сомнительные сайты с предупреждающими сообщениями о вирусах, которые никогда не исчезают, и я не могу понять это.Фильтрация запроса в Realm по NSDate вызывает NSInvalidArgumentException

Я просто пытаюсь фильтровать 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:ss , или date.description, используя NSPredicate(format:...) вместо Result<T>.filter(...) и так далее, но ничего не работало.

Это ошибка в королевстве?

ответ

8

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

NSPredicate не имеет никакой специальной обработки для Swift интерполяции строк и не поддерживает даты письма непосредственно в строке формата.

+0

Это сработало. Поэтому 'NSPredicate' требует от нас использовать синтаксис строки формата Objective-C ... странный. Но спасибо! – nekonari

Смежные вопросы