【问题标题】:Parsing a Date string with AFNetworking (dateFormatter)使用 AFNetworking (dateFormatter) 解析日期字符串
【发布时间】:2013-10-28 15:30:11
【问题描述】:

我正在更改我的应用程序,以便它可以通过 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];
}

* ReleaseViewController.h (destinationViewController)

#import "UpcomingRelease.h"

@property (strong, nonatomic) NSDictionary *singleRelease;

@property (weak, nonatomic) IBOutlet UILabel *release_date;

* ReleaseViewController.m

@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')。

【问题讨论】:

  • 当您尝试访问具有属性 formattedDate 的对象时,它似乎已被释放。我认为问题不在日期格式化程序中,而是您如何处理具有此属性的对象

标签: ios json afnetworking afnetworking-2


【解决方案1】:

错误已经表明NSDictionary 没有名为formattedDate 的属性。现在你打电话给_singleRelease.formattedDate,而_singleReleaseNSDictionary

将您的代码更改为以下内容:

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];
}

【讨论】:

  • UpcomingRelease 是一个 NSObject,singleRelease 是我的destinationViewController (ReleaseViewController) 的一个NSDictionary
  • 您使用 UpcomingRelease 的原因是什么?
  • 我用作基础的教程是这样设置代码的。但我猜是存储 NSStrings 并更改日期以便它可读。
  • 好的,我根据您提供的其他详细信息编辑了我的答案。这行得通吗?
猜你喜欢
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-21
  • 1970-01-01
相关资源
最近更新 更多