更新时间:2023-11-28 18:43:10
这应该为你打电话:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
NSString * rawDateStr = [[self.fetchedResultsController sections] objectAtIndex:section] ;
//将rawDateStr字符串转换为NSDate ...
NSDateFormatter * formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:@yyyy-MM-dd HH:mm:ss ZZ];
NSDate * date = [formatter dateFromString:rawDateStr];
//将NSDate转换为我们想要的格式...
[formatter setDateFormat:@d MMMM yyyy];
NSString * formattedDateStr = [formatter stringFromDate:date];
return formattedDateStr;
}
$ b
Jus看到了你的意见和你想要实现的,你可以创建一个暂时的 NSDate
属性(非持久性)与上述代码类似的方式(即没有H:mm:ss ZZZZ),并将该属性用作 sectionNameKeyPath
值。
因此,对于 foo
对象,使用 fooDate
和 fooDateTransient
属性,您将:
获取您的 foo.fooDate
属性
使用上述代码(或类似代码)转换它,并分配 NSDate
结果到 foo.fooDateTransient
使用 fooDateTransient
sectionNameKeyPath
ol>
PS:我没有自己测试,但值得一试!
祝你好运,
Rog
I develop an application which uses Core Data. In one UITableView, I want to display a list of my entities, sorted by the saved date of the objects. When I do this:
fetchedResultsController = [[NSFetchedResultsController alloc]
initWithFetchRequest:fetchRequest
managedObjectContext:managedObjectContext
sectionNameKeyPath:@"date"
cacheName:nil];
I get for each object a new section because this code groups the dates according to the seconds, too. But I want a list of the objects, grouped by date, but only according to the day, month and year. Is it possible and how?
Thank you very much for your help!! ;)
This should do the trick for you:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
NSString *rawDateStr = [[[self.fetchedResultsController sections] objectAtIndex:section] name];
// Convert rawDateStr string to NSDate...
NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss ZZ"];
NSDate *date = [formatter dateFromString:rawDateStr];
// Convert NSDate to format we want...
[formatter setDateFormat:@"d MMMM yyyy"];
NSString *formattedDateStr = [formatter stringFromDate:date];
return formattedDateStr;
}
[EDIT]
Jus saw your comment and for what you are trying to achieve, you could create a transient NSDate
attribute (non persistent) that is formatted in a similar way to the above code (i.e. without H:mm:ss ZZZZ) and use that attribute as your sectionNameKeyPath
value.
So in a nutshell for a foo
object, with fooDate
and fooDateTransient
attributes, you would:
Get your foo.fooDate
attribute
Transform it using the code above (or similar) and assign the NSDate
result to foo.fooDateTransient
Use fooDateTransient
as your sectionNameKeyPath
when creating the fetchedResultsController
object.
PS: I haven't tested this myself but should be worth a shot!
Good luck,
Rog