这是一个根据当前时间过滤具有开始时间和结束时间的数组的示例。这工作正常:
问题:但在这里我想知道collectionArr的索引位置,谓词从中选择值。
NSDate* currentDate = [NSDate date];
NSDateFormatter *_formatter = [[[NSDateFormatter alloc] init] autorelease];
[_formatter setLocale:[NSLocale currentLocale]];
[_formatter setDateFormat:@"yyyy-MM-dd hh:mm a"];
NSString *_date=[_formatter stringFromDate:currentDate];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"StartDate <= %@ AND EndDate = %@", _date, _date];
if (shortPrograms.count > 0) {
[shortPrograms removeAllObjects];
}
//collectionArr have multiple dictionaries ,which has start date and end date.
//collectionArr = [[NSArray alloc] initWithObjects:[NSDictionary dictionaryWithObjectsAndKeys:@"..Sdate..",@"Startdate",@"..Edate..",@"Enddate", nil], nil];
//shortPrograms is a filter are, having the date in between start date and end date.
[shortPrograms addObjectsFromArray:[collectionArr filteredArrayUsingPredicate:predicate]];
最佳答案
您的shortPrograms
数组包含collectionArr
中对象的子集。听起来您想从shortPrograms
获取对象并确定它来自collectionArr
的位置。
一般来说,您不能。但是,如果collectionArr
中的所有对象都是唯一的,则有可能。
id someObject = shortPrograms[someIndex]; // get some value
NSUInteger originalIndex = [collectionArr indexOfObject:someObject];
如果
collectionArr
中的对象不是唯一的,则此方法将无效,因为无法知道您要处理的是哪个重复项。