目前我的应用程序中有两个 NSDateFormatter ,我想以某种方式“组合”它们,所以我只有它们,因为它们解析相同的日期。
我有一个名为 UpcomingReleases 的 NSObject,我的所有 JSON 信息都存储在其中。
即将发布.h
- (NSString *) formattedDate;
即将发布.m
- (NSString *) formattedDate {
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"];
NSDate *readableDate = [dateFormatter dateFromString:self.release_date];
[dateFormatter setDateFormat:@"MMMM dd"];
return [dateFormatter stringFromDate:readableDate];
}
我的 UICollectionViewController (UpcomingReleasesViewController.m)
if([upcomingReleaseDictionary objectForKey:@"release_date"] != NULL)
{
NSString *readableDate = [upcomingReleaseDictionary objectForKey:@"release_date"];
UpcomingRelease *upcoming = [[UpcomingRelease alloc] init];
upcoming.release_date = readableDate;
cell.release_date.text = [NSString stringWithFormat:@"%@", upcoming.formattedDate];
}
我的详细视图控制器(ReleaseViewController.m)
(_singleRelease 是一个 NSDictionary)
- (void)viewDidLoad
{
[super viewDidLoad];
if([_singleRelease objectForKey:@"release_date"] != NULL)
{
NSString *readableDate = [_singleRelease objectForKey:@"release_date"];
UpcomingRelease *singleRelease = [[UpcomingRelease alloc] init];
singleRelease.release_date = readableDate;
self.release_date.text = [NSString stringWithFormat:@"%@", singleRelease.formattedDate];
}
}
这工作正常,直到我在 twitter 操作上添加了一个共享,我不得不添加另一个 NSDateFormatter,以便它可以在推文中显示可读的日期(我会收到一条错误消息“ReleaseViewController 没有可见接口声明所选的'formattedDate'”除此以外)。
- (NSString *) formattedDate:(NSString *)jsonDateString {
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"];
NSDate *readableDate = [dateFormatter dateFromString:jsonDateString];
[dateFormatter setDateFormat:@"MMMM dd"];
return [dateFormatter stringFromDate:readableDate];
}
#pragma mark - Share on twitter
- (IBAction)shareOnTwitter:(id)sender {
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
{
SLComposeViewController *tweetSheet = [SLComposeViewController
composeViewControllerForServiceType:SLServiceTypeTwitter];
NSString *formattedDate = [self formattedDate:[_singleRelease objectForKey:@"release_date"]];
[tweetSheet setInitialText:[NSString stringWithFormat:@"%@", formattedDate]];
[self presentViewController:tweetSheet animated:YES completion:nil];
}
}
如何将这两个 NSDateFormatter 合并为一个?他们都以相同的方式解析相同的字符串(如果有比我目前正在做的更好的方法来显示 formattedDate 字符串,那就太好了)。
这是我的 JSON 显示日期字符串的方式:
release_date: "2013-11-16T00:00:00.000Z"
谢谢。