您好,在我的应用程序中,我有一个包含一组词典的数组。每个字典都有三个键值对。三个中有两个是开始日期和结束日期。现在我想传递一个日期并让它从数组中获取字典,其中日期将在开始日期和结束日期之间。如果日期不在开始日期和结束日期范围内,则必须检入另一个字典并且必须获取该字典。任何人都可以帮我做这件事。
日期(DD / MM / YYYY): 13/04/2014
开始日期: 03/04/2014
结束日期: 2014年4月31日
字典:
NSDictionary *dic=[[NSDictionary alloc]initWithObjectsAndKeys:@"0",@"Scode",@"01-04-2014",@"StartDate",@"15-04-2014",@"EndDate",nil];
NSDictionary *dic1=[[NSDictionary alloc]initWithObjectsAndKeys:@"1",@"Scode",@"16-04-2014",@"StartDate",@"25-04-2014",@"EndDate",nil];
NSDictionary *dic3=[[NSDictionary alloc]initWithObjectsAndKeys:@"2",@"Scode",@"26-04-2014",@"StartDate",@"30-04-2014",@"EndDate"nil];
结果:
NSPredicate *predicateName;
predicateName=[NSPredicate predicateWithFormat: @"StartDate <=%@ && EndDate >=%@",date,date];
NSArray *arrResult=[tempArray filteredArrayUsingPredicate:predicateName];
NSMutableArray *arrSearchResults = [[NSMutableArray alloc]initWithArray:arrResult];
如果日期是1-4-2014,则arrSearchResults为:
({
EndDate = "15-04-2014";
StartDate = "01-04-2014";
SCode = 0;
})
如果日期是2-04-2014,arrSearchResults是:
({
EndDate = "25-04-2014";
StartDate = "16-04-2014";
SCode = 1;
})
答案 0 :(得分:1)
请检查答案:
NSMutableArray *arr=[[NSMutableArray alloc]init];
NSDictionary *dic=[[NSDictionary alloc]initWithObjectsAndKeys:@"0",@"Scode",@"01-04-2014",@"StartDate",@"15-04-2014",@"EndDate",nil];
NSDictionary *dic1=[[NSDictionary alloc]initWithObjectsAndKeys:@"1",@"Scode",@"16-04-2014",@"StartDate",@"25-04-2014",@"EndDate",nil];
NSDictionary *dic2=[[NSDictionary alloc]initWithObjectsAndKeys:@"2",@"Scode",@"26-04-2014",@"StartDate",@"30-04-2014",@"EndDate",nil];
[arr addObject:dic];
[arr addObject:dic1];
[arr addObject:dic2];
NSPredicate *predicateName;
predicateName=[NSPredicate predicateWithFormat: @"StartDate <=%@ && EndDate >=%@",@"02-04-2014",@"02-04-2014"];
NSArray *arrResult=[arr filteredArrayUsingPredicate:predicateName];
NSMutableArray *arrSearchResults = [[NSMutableArray alloc]initWithArray:arrResult];
arrSearchResults将是结果。
将02-04-2014日期替换为您要应用过滤器的日期。
答案 1 :(得分:-2)
你需要做什么:
1)从数组中提取startDate和endDate。
2)使用日期格式化程序格式化两个日期
3)现在,将两个日期与当前日期进行比较,如下所示,
根据NSDate比较的Apple文档:
if (([currentDate compare:startDate] == NSOrderedDescending) && ([currentDate compare:endDate] == NSOrderedAscending))
{
//Date lies in between two dates
}
希望它有所帮助。