0

私はこのような NSDictionary の配列を持っています。

 {
    id = 12;
    "time_from" = "12:00";
    "time_to" = "16:00";
    "timing_name" = Lunch;
},
    {
    id = 11;
    "time_from" = "08:00";
    "time_to" = "12:00";
    "timing_name" = BreakFast;
},
    {
    id = 13;
    "time_from" = "09:00";
    "time_to" = "10:00";
    "timing_name" = Dinner;
}

私の現在の時刻が 8:45 だとすると、現在の時刻が time_from と time_to の間にある場合、述語を使用して正確な辞書を見つけるにはどうすればよいでしょうか。

実際には、述語が必要です。

4

4 に答える 4

1
-(void)makeCalculation
{
NSMutableDictionary *temp=[[NSMutableDictionary alloc]init];

[temp setObject:@"13" forKey:@"id"];
[temp setObject:@"12:00" forKey:@"timeFrom"];
[temp setObject:@"16:00" forKey:@"timeTo"];

NSMutableDictionary *temp1=[[NSMutableDictionary alloc]init];

[temp1 setObject:@"13" forKey:@"id"];
[temp1 setObject:@"08:00" forKey:@"timeFrom"];
[temp1 setObject:@"12:00" forKey:@"timeTo"];

NSMutableDictionary *temp2=[[NSMutableDictionary alloc]init];

[temp2 setObject:@"13" forKey:@"id"];
[temp2 setObject:@"09:00" forKey:@"timeFrom"];
[temp2 setObject:@"10:00" forKey:@"timeTo"];

NSMutableArray *arrayOfDict=[[NSMutableArray alloc]init];

[arrayOfDict addObject:temp];
[arrayOfDict addObject:temp1];
[arrayOfDict addObject:temp2];


NSMutableArray *timeToCompare=[[NSMutableArray alloc]initWithObjects:@"8:45",@"8:45", nil];

for(int k=0;k<[arrayOfDict count];k++)
{
    NSMutableDictionary *temp=[arrayOfDict objectAtIndex:k];

    NSString *timeFrom=[temp objectForKey:@"timeFrom"];
    NSString *timeTo=[temp objectForKey:@"timeTo"];

    NSMutableArray *tempTocheck=[[NSMutableArray alloc]initWithObjects:timeFrom,timeTo, nil];
    if([self isTimeClash:timeToCompare compareWith:tempTocheck])
    {
        NSLog(@"Time Belong in id:%@",[temp objectForKey:@"id"]);

    }
}
}


-(BOOL)isTimeClash:(NSMutableArray *)timeToCheck compareWith:(NSMutableArray *)timeToCompare
{

int Start1=[self getMinitesFromTime:[timeToCheck objectAtIndex:0]];
int end1=[self getMinitesFromTime:[timeToCheck objectAtIndex:1]];

int start2=[self getMinitesFromTime:[timeToCompare objectAtIndex:0]];
int end2=[self getMinitesFromTime:[timeToCompare objectAtIndex:1]];

if(start2>=end1 || end2<=Start1)
{
    NSLog(@"Clash not happeed");
    return NO;
}
else
{
    NSLog(@"clash hapens ");

    return YES;
}

}


-(int)getMinitesFromTime:(NSString *)timeINHours
{
NSInteger hrVal1 = [(timeINHours) intValue] ;

NSArray *array1 = [timeINHours  componentsSeparatedByString:@":"];
int minVal1 = [[array1 lastObject]intValue];

hrVal1 = hrVal1 *60;
minVal1 = hrVal1 + minVal1;


return minVal1;
}
于 2013-05-24T12:03:10.277 に答える