我有两个NSDate
,开始日期和结束日期。我想找到开始日期和结束日期之间的所有日期。我尝试了下面的代码,但出现以下错误:
-[__NSDate length]: unrecognized selector sent to instance 0xa484b30
self.m_maEventsForMonth = [NSMutableArray array];
NSPredicate * sPredicate = [NSPredicate predicateWithFormat:@"(date >= %@) AND (date <= %@)", start, end];
[self.m_maEventsForMonth setArray:[m_maEvents filteredArrayUsingPredicate:sPredicate]];
我也尝试如下制作开始和结束字符串,但我得到了错误的结果:
NSString * sDateStart = [self dateToString:start format:@"M/d/yyyy"];
NSString * sDateEnd = [self dateToString:end format:@"M/d/yyyy"];
self.m_maEventsForMonth = [NSMutableArray array];
NSPredicate * sPredicate = [NSPredicate predicateWithFormat:@"(date BETWEEN %@)", @[sDateStart, sDateEnd]];
[self.m_maEventsForMonth setArray:[m_maEvents filteredArrayUsingPredicate:sPredicate]];
我不明白出了什么问题。任何帮助,将不胜感激。
更新:
我的 m_maEvents 是一个 NSMutableArray,我的自定义 EventObjects 定义如下:
@interface EventObject : NSObject
{
NSString * title;
NSString * date;
NSString * starttime;
NSString * endtime;
NSString * location;
NSString * url;
NSMutableArray * m_EventTypes;
NSDate * dtDate;
}
@property (nonatomic, retain) NSString * title;
@property (nonatomic, retain) NSString * date;
@property (nonatomic, retain) NSString * starttime;
@property (nonatomic, retain) NSString * endtime;
@property (nonatomic, retain) NSString * location;
@property (nonatomic, retain) NSString * url;
@property (strong, nonatomic) NSMutableArray * m_EventTypes;
@property NSDate * dtDate;
我用字符串初始化这些对象,并在 init 方法中创建 NSDate 对象。这些都不重要,我的问题是我不知道如何定义谓词来过滤两个日期之间的日期。我可以使用 NSDate 对象和字符串,但不确定如何定义谓词。我认为它使用字符串进行比较,这就是我得到长度错误的原因。
我需要自定义比较方法吗?如果是这样,我还没有做过。