【问题标题】:Converting __NSCFDictionary to NSDate [duplicate]将 __NSCFDictionary 转换为 NSDate [重复]
【发布时间】:2015-03-20 21:24:31
【问题描述】:

我通过NSDictionary 传递NSDate,该NSDictionary 作为推送通知发送给另一个用户/多个用户。我正在尝试获取通过推送通知发送的NSDate 并将其转换回NSDate,但该对象不断以__NSCFDictionary 出现,这显然是我不想要的。我打印出 NSDictionary 键“时间”的样子,这就是输出的内容。

"__type" = Date;
    iso = "2015-03-20T22:05:00.000Z";

如何将此__NSCFDictionary 转换为NSDate

【问题讨论】:

  • 您必须使用 [yourDict valueForKey:@"iso"] 获取 NSString 的“iso”键,并根据您的要求使用 NSDateFormatter 将其转换为 NSDate。我误解你的问题了吗?
  • 首先您需要了解什么是 NSDictionary 以及与 NSString 有何不同。然后你需要学习如何使用 NSDateFormatter。
  • @HotLicks 我知道它们是什么以及如何使用它们。我只是不明白为什么我的 NSDate 被转换为这种 __NSCFDictionary 类型的对象而不是作为 NSDate 留下
  • 如果您要问如何将 NSDictionary 转换为 NSDate,那么您不知道它是什么。

标签: ios objective-c nsdate nsdictionary


【解决方案1】:

您的陈述非常清楚地表明您并不真正了解字典和日期之间的区别。您发布的数据是一个包含 2 个键/值对的字典,其中一个包含日期字符串。您需要获取“iso”键的值并使用日期格式化程序将其转换为日期。

NSDictionary *myDateDict = //whatever;

NSString *dateString = myDateDict[@"iso"];
NSDateFormatter *formatter = NSDateFormatter.dateFormat = "<your date format>";
NSDate *date = [formatter dateFromString: dateString];

【讨论】:

    猜你喜欢
    • 2013-01-16
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    • 2012-08-20
    • 1970-01-01
    相关资源
    最近更新 更多