【发布时间】:2014-07-10 06:34:08
【问题描述】:
我有一些数据(如NSMutableArray 中的NSDictionary),示例数据如下,
将每一行视为NSDictionary,整个表是一个包含事件的NSMutableArray。
我想要两个日期之间的结果,所以我使用NSPredicate 过滤我的数据。
这是我的代码 sn-p,
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"Date >= %@ AND
Date <= %@", startDate,endDate];
NSArray *filter = [arrayEvents filteredArrayUsingPredicate:predicate];
测试过滤:
案例 1:
NSString *startDate = @"01/07/14";
NSString *endDate = @"31/07/2014";
输出: 所有事件(行)。
案例 2:
NSString *startDate = @"20/07/14";
NSString *endDate = @"31/07/2014";
输出: 最后四个事件(行)。
案例 3:
NSString *startDate = @"11/07/14";
NSString *endDate = @"20/07/2014";
输出: 只有第二个事件(行)。
案例 4:
NSString *startDate = @"01/08/14";
NSString *endDate = @"31/08/2014";
输出: 所有事件(行)。
结论:
案例 1、2 和 3 正确,案例 4 不正确。
注意事项:
- 日期类型为
NSString - 日期格式为日-月-年(即 dd/MM/yyyy)
- 即使日期格式为
- hyphen而不是/ (forward slash),结果相同 - 即使我们更改了日期格式月-日-年(即 MM/dd/yyyy),结果也相同
有人请帮助我我在这里做错了什么?有什么我想念的吗?我知道还有一些其他问题,但没有一个对我有帮助。
【问题讨论】:
-
我没有经常使用
NSPredicate,但几乎可以肯定不支持字符串中日期比较的概念。如果您使用正确的类型来表示您的数据,那么我相信您会取得更大的成功。正确的数据类型是NSDate。
标签: ios nsstring nsarray nspredicate