领域查询'在日期之前'

时间:2015-07-30 08:09:28

标签: ios objective-c cocoa-touch realm

我刚刚发现 Realm 并开始在 objective-c 中使用它。

我正在尝试将对象 create_date 置于 specific date and time

之前

我看了this answer on StackOverflow,所以我尝试了这个:

NSString *dateString = @"2015-06-03 08:24:00";
NSDateFormatter * dateFormatter = [NSDateFormatter new];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *newDate = [dateFormatter dateFromString:dateString];

RLMRealm *realm = [RLMRealm defaultRealm];
NSString *_where = [NSString stringWithFormat:@"create_date < '%@'", newDate];
RLMResults *results = [database_articles objectsInRealm:realm where:_where];

但是我收到以下错误:

  

'类型为'database_articles'的对象的'创建'属性的类型日期的预期对象,但已收到:2015-06-03 05:24:00 +0000'

那么如何在 Realm 中的查询中传递 NSDATE

提前致谢..

1 个答案:

答案 0 :(得分:4)

您使用方法+ (RLMResults *)objectsInRealm:(RLMRealm *) where:(NSString *), ...;,这是一个方便的API,接受一个字符串和更多参数,并为您即时构建NSPredicate。通过首先将您的参数提供给[NSString stringWithFormat:],您可以序列化您的日期,以便发现此错误。

使用这两种变体中的一种来避免这种情况:

RLMResults *results = [database_articles objectsInRealm:realm where:@"create_date < %@", newDate];
NSPredicate *_where = [NSPredicate predicateWithFormat:@"create_date < %@", newDate];
RLMResults *results = [database_articles objectsInRealm:realm withPredicate:_where];