我是这个模特:
@interface Data : NSObject
@property int Period;
@property (nonatomic, assign) NSDate *Start;
@property (nonatomic, assign) NSDate *End;
@end
@implementation Data
@synthesize Period, Start, End;
@end
我在可变数组中添加数据。
@property (strong, nonatomic) NSMutableArray* myArray;
self.myArray = [NSMutableArray arrayWithCapacity:0];
Data *element1 =[ [Data alloc] init];
element1.Period = 1;
element1.Start = dateStart1;
element1.End = dateEnd1;
[self.myArray addObject:element1];
Data *element2 =[ [Data alloc] init];
element2.Period = 2;
element2.Start = dateStart2;
element2.End = dateEnd2;
[self.myArray addObject:element2];
Data *element3 =[ [Data alloc] init];
element3.Period = 3;
element3.Start = dateStart3;
element3.End = dateEnd3;
[self.myArray addObject:element3];
我可以从数组中提取开始日期
Data * extractDateStart = [self.myArray valueForKey:@"Start"];
NSLog(@"All Start Dates: %@", extractDateStart);
我需要为该数组循环以搜索特定日期(由用户插入)的三个时段中的哪一个。
我知道如何从正常的'中提取数据。阵列:
for(NSString * extractDate in self.myArray) {
NSLog(extractDate);
}
并且知道如何将一个日期与另一个日期进行比较:
switch ([dateInserted compare: date]) { case NSOrderedAscending: // dateInserted old than date break; case NSOrderedSame: // dateInserted the same then date break; case NSOrderedDescending: // dateInserted new then date break; default: // generic error break; }
但是如何在这种情况下移动?
答案 0 :(得分:1)
我可能不理解你的问题,但听起来像你:
NSDate
Data
落在NSDate
和Start
日期之间的End
对象如果是这种情况,这样的事情应该有效:
NSDate *dateToFind = ...;
Data *foundData = nil; // We will put the correct Data object here if we find it
for (Data *data in self.myArray) {
// Test that dateToFind is between data.Start and data.End
if (([dateToFind compare:data.Start] != NSOrderedAscending)
&& ([dateToFind compare:data.End] != NSOrderedDescending)))
{
foundData = data; // dateToFind is in this Data's date range
}
}
// foundData is either nil or contains the Data you were looking for
有关测试日期是否属于其他两个日期的其他好方法see this question。