Objective c 筛选特定日期、年份、月份或日期范围的核心数据对象数组

Objective c 筛选特定日期、年份、月份或日期范围的核心数据对象数组,objective-c,xcode,core-data,nsarray,Objective C,Xcode,Core Data,Nsarray,我有一个对象数组,该数组的一个属性是NSDate。 我需要创建一个函数来根据特定日期过滤这些对象 比如: 2013年的过滤器阵列 日期为2013年3月12日的过滤器阵列 2012年2月的过滤器阵列 范围日期内的筛选器数组 请给我一个解决方案或建议我一个更好的方法来管理核心数据,以实现这一点 提前感谢从核心数据存储获取数据时,您可以使用NSPredicate筛选结果。此外,从核心数据存储中提取后,还可以使用NSPredicate进行过滤(就像过滤任何数组一样) 从核心数据提取时,您可以使用它,如下

我有一个对象数组,该数组的一个属性是
NSDate
。 我需要创建一个函数来根据特定日期过滤这些对象

比如:

  • 2013年的过滤器阵列
  • 日期为2013年3月12日的过滤器阵列
  • 2012年2月的过滤器阵列
  • 范围日期内的筛选器数组
  • 请给我一个解决方案或建议我一个更好的方法来管理核心数据,以实现这一点


    提前感谢

    从核心数据存储获取数据时,您可以使用NSPredicate筛选结果。此外,从核心数据存储中提取后,还可以使用NSPredicate进行过滤(就像过滤任何数组一样)

    从核心数据提取时,您可以使用它,如下所示:

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(date >= %@) AND (date <= %@)", startDate, endDate];
    NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
    [request setEntity:[NSEntityDescription entityForName:@"EntityName" inManagedObjectContext:moc]];
    [request setPredicate:predicate];
    
    NSError *error = nil;
    NSArray *results = [moc executeFetchRequest:request error:&error];
    

    NSPredicate*predicate=[NSPredicate predicateWithFormat:@”(日期>=%@)和(日期您应该使用
    NSPredicate
    。您可以筛选结果数组或将谓词直接包含到
    NSFetchRequest

    /* 1 */ [NSPredicate predicateWithFormat:@"date > %@ && date < %@", 
              firstDayOfYear, lastDayOfYear];
    /* 2 */ [NSPredicate predicateWithFormat:@"date > %@ && date < %@", 
              startMarch12, endMarch12];
    /* 3 */ [NSPredicate predicateWithFormat:@"date > %@ && date < %@", 
              startFeb2012, endFeb2012];
    /* 4 */ [NSPredicate predicateWithFormat:@"date > %@ && date < %@", 
              startDate, endDate];
    
    /*1*/[NSPredicate谓词格式:@“日期>%@&&date<%@,
    一年的第一天,一年的最后一天];
    /*2*/[NSPredicate谓词格式:@“日期>%@&&date<%@”,
    startMarch12,endMarch12];
    /*3*/[NSPredicate谓词格式:@“日期>%@&&date<%@”,
    2012年6月开始,2012年2月结束];
    /*4*/[NSPredicate谓词格式:@“日期>%@&&date<%@”,
    开始日期,结束日期];