你有这样的课程:
@interface Foo : NSObject
property(nonatomic, strong) NSNumber *dateCreated;
@end
我有一个Foo类型的对象数组,如下所示:
NSMUtableArray *array = [NSMUtableArray array];
Foo *foo1 = [Foo alloc] init];
foo1.dateCreated =[NSNumber numberWithDouble:[NSDate timeIntervalSince1970]];
[array addObject:foo1];
Foo *foo2 = [Foo alloc] init];
foo1.dateCreated =[NSNumber numberWithDouble:[NSDate timeIntervalSince1970]];
[array addObject:foo2];
....
对象foo1,foo2,...不是同时创建的。这些是在différents日期创建的。
问题:
我想在白天订购我的物品,我的意思是这里有所有的物品,例如:2009年9月6日,另一个列表创建于2009年9月7日,....
感谢您的回答。
答案 0 :(得分:1)
查找所有对象的第一个创建日期。这是用于开始迭代的第一天。查找上次创建日期,这将告诉您迭代何时完成。这两个日期都需要转换,因此它们分别在当天的开始和结束时。
迭代,从第一个日期开始,一直持续到最后一个日期,每次增加一天的秒数。
请注意,同样的过程可以使用存储的日期而不是数字,但您可以使用NSDateComponents
,这样可以更轻松地计算第一个和最后一个日期并添加日期时间间隔。
在你的循环中你有两个日期:
使用此信息,您可以在源对象列表上运行谓词:
[NSPredicate predicateWithFormat:@"dateCreated >= %@ AND dateCreated <= %@", startDate, endDate]
检查过滤器(filteredArrayUsingPredicate:
)后结果数组中是否有任何内容,如果有结果,则将其添加到结果列表(或字典)中。