0

我有一个带有单个 NSDate 属性的表。该表包含其 NSDate 属性填充有各种日期的记录。我需要创建一个仅检索此 NSDate 属性中不同年份的请求。

例如,如果我的表包含以下条目:

date |stringValue
01-20-2013|"foo"
03-23-2013|"bar"
04-24-2014|"baz"

核心数据获取请求将在数组中返回以下内容:

2013
2014

4

2 回答 2

1

我建议您使用 an 从 Core Data 获取数据NSFetchRequest,然后使用 anNSDateFormatter以所需格式将数据呈现给用户界面,或者在需要使用的地方。我不确定是否可以纯粹在 Core Data 中做你想做的事情,或者至少如果是的话,上面的内容可能会更简单。总是选择最简单的事情

于 2013-10-01T05:46:56.453 回答
0

首先,您必须像这样获取不同的值

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]);
}
于 2013-10-01T05:52:23.280 回答