我有一个带有单个 NSDate 属性的表。该表包含其 NSDate 属性填充有各种日期的记录。我需要创建一个仅检索此 NSDate 属性中不同年份的请求。
例如,如果我的表包含以下条目:
date |stringValue
01-20-2013|"foo"
03-23-2013|"bar"
04-24-2014|"baz"
核心数据获取请求将在数组中返回以下内容:
2013
2014
我有一个带有单个 NSDate 属性的表。该表包含其 NSDate 属性填充有各种日期的记录。我需要创建一个仅检索此 NSDate 属性中不同年份的请求。
例如,如果我的表包含以下条目:
date |stringValue
01-20-2013|"foo"
03-23-2013|"bar"
04-24-2014|"baz"
核心数据获取请求将在数组中返回以下内容:
2013
2014
我建议您使用 an 从 Core Data 获取数据NSFetchRequest
,然后使用 anNSDateFormatter
以所需格式将数据呈现给用户界面,或者在需要使用的地方。我不确定是否可以纯粹在 Core Data 中做你想做的事情,或者至少如果是的话,上面的内容可能会更简单。总是选择最简单的事情。
首先,您必须像这样获取不同的值
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"MyEntity"];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"MyEntity" inManagedObjectContext:self.managedObjectContext];
// Since you only want distinct date, only ask for the 'date' property.
fetchRequest.resultType = NSDictionaryResultType;
fetchRequest.propertiesToFetch = [NSArray arrayWithObject:[[entity propertiesByName] objectForKey:@"date"]];
fetchRequest.returnsDistinctResults = YES;
// Now it should yield an NSArray of distinct values.
NSArray *distinctDateArray = [self.managedObjectContext executeFetchRequest:fetchRequest error:nil];
然后使用 NSDateFormatter 只获取您想要的确切年份值。
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy"];
for(NSDate *date in distinctDateArray)
{
NSLog(@"Date: %@", [dateFormatter stringFromDate:date]);
}