0

嗨有这样的课:

@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,... 不是同时创建的。它们是在不同的日期创建的。

问题 :

我想按天订购我的对象,我的意思是创建了所有对象,例如:2009 年 9 月 6 日,另一个列表创建了 2009 年 9 月 7 日,....

感谢您的回答。

4

1 回答 1

1

查找所有对象的第一个创建日期。这是开始迭代的第一天。查找最后创建日期,这会告诉您迭代何时完成。这两个日期都需要转换,以便它们位于一天的开始和结束(分别)。

迭代,从第一个日期开始,一直持续到最后一个日期,每次增加一天的秒数。

请注意,相同的过程将适用于存储的日期而不是数字,但您会使用NSDateComponents它来计算第一个和最后一个日期并添加天时间间隔。

在您的循环中,您有 2 个日期:

  1. 该迭代的开始日期
  2. 该迭代的结束日期(比开始日期添加的一整天少 1 秒)

使用此信息,您可以在源对象列表上运行谓词:

[NSPredicate predicateWithFormat:@"dateCreated >= %@ AND dateCreated <= %@", startDate, endDate]

检查过滤器 ( ) 之后的结果数组中是否有任何内容filteredArrayUsingPredicate:,如果有结果,请将其添加到结果列表(或字典)中。

于 2013-08-01T10:27:11.937 回答