Ios 使用AFNetworking(dateFormatter)分析日期字符串

Ios 使用AFNetworking(dateFormatter)分析日期字符串,ios,json,afnetworking,afnetworking-2,Ios,Json,Afnetworking,Afnetworking 2,我正在更改我的应用程序,以便它可以通过AFNetworking解析我的JSON,当我尝试使用dateFormatter更改日期字符串时,我遇到了一个错误。我有一个名为“UpcomingRelease”的NSObject、一个名为“UpcomingReleasesViewController”的CollectionViewController和一个名为“ReleaseViewController”的destinationViewController 这是我的旧代码: *UpcomingReleas

我正在更改我的应用程序,以便它可以通过AFNetworking解析我的JSON,当我尝试使用dateFormatter更改日期字符串时,我遇到了一个错误。我有一个名为“UpcomingRelease”的NSObject、一个名为“UpcomingReleasesViewController”的CollectionViewController和一个名为“ReleaseViewController”的destinationViewController

这是我的旧代码:

*UpcomingRelease.h

@interface UpcomingRelease : NSObject

@property (nonatomic, strong) NSString *release_date;

- (NSString *) formattedDate;

@end
*UpcomingRelease.m

- (NSString *) formattedDate {
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"];
    NSDate *newDate = [dateFormatter dateFromString:self.release_date];

    [dateFormatter setDateFormat:@"MMMM dd"];
    return [dateFormatter stringFromDate:newDate];
}
@synthesize singleRelease = _singleRelease;
@synthesize release_date = _release_date;

- (void)viewDidLoad
{
    [super viewDidLoad];

    if([_singleRelease objectForKey:@"release_date"] != NULL)
    {
        self.release_date.text = [NSString stringWithFormat:@"%@", _singleRelease.formattedDate];
    }
    else
    {
        self.release_date.text = [NSString stringWithFormat:@"Releasing Soon"];
    }
}
*ReleaseViewController.h(destinationViewController)

*ReleaseViewController.m

- (NSString *) formattedDate {
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"];
    NSDate *newDate = [dateFormatter dateFromString:self.release_date];

    [dateFormatter setDateFormat:@"MMMM dd"];
    return [dateFormatter stringFromDate:newDate];
}
@synthesize singleRelease = _singleRelease;
@synthesize release_date = _release_date;

- (void)viewDidLoad
{
    [super viewDidLoad];

    if([_singleRelease objectForKey:@"release_date"] != NULL)
    {
        self.release_date.text = [NSString stringWithFormat:@"%@", _singleRelease.formattedDate];
    }
    else
    {
        self.release_date.text = [NSString stringWithFormat:@"Releasing Soon"];
    }
}

我听到一个错误说“在“NSDictionary”类型的对象上找不到属性“formattedDate”。

错误已经表明
NSDictionary
没有名为
formattedDate
的属性。现在您正在调用
\u singleRelease.formattedDate
\u singleRelease
是一个
NSDictionary

将代码更改为以下内容:

if([_singleRelease objectForKey:@"release_date"] != NULL)
{
    NSString *rd = [_singleRelease objectForKey:@"release_date"]; // I assume that this is a string
    UpcomingRelease *upcoming = [[UpcomingRelease alloc] init];
    upcoming.release_date = rd;

    self.release_date.text = [NSString stringWithFormat:@"%@", upcoming.formattedDate];
}

当您尝试访问属性为formattedDate的对象时,该对象似乎已被释放。我认为问题不在于日期格式化程序,而在于如何处理对象hs this propertyUpcomingRelease是一个NSObject,singleRelease是我的destinationViewController(ReleaseViewController)的一个NSDictionary,你为什么使用UpcomingRelease?我用作基础的教程的代码就是这样设置的。但我猜是为了存储NSString并更改日期,使其可读。好的,我根据您提供的其他详细信息编辑了我的答案。这行吗?