【问题标题】:What format is a Date in CoreData - Date or String?CoreData 中的日期是什么格式 - 日期或字符串?
【发布时间】:2017-03-24 12:48:06
【问题描述】:

我有一个例程,可以比较网站上记录的最后更新时间与 iPad 上 CoreData 中保存的相同记录的时间。这里,obsLastUpdated 是 CoreData 中设置为类型Date 的字段。

CoreData 读取数据到 NSDate:

NSDate *iPadDate = [[self.recordDetails objectAtIndex:0] obsLastUpdated]; //gets the date from CoreData

我收到此警告:

使用表达式初始化“NSDate *”的不兼容指针类型 'NSString *' 类型的

这只是一个警告,但一切仍然有效。如果我尝试将此NSDate iPadDate 与另一个NSDate 进行比较,则没有错误,一切正常。但我想深入了解警告。

如果我从 CoreData 作为字符串读取并转换为 NSDate,我似乎无法正确格式化并且应用程序崩溃。我试过了:

NSString *iPadDateStr = [[self.recordDetails objectAtIndex:0] obsLastUpdated];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
NSDate *iPadDate = [dateFormat dateFromString: iPadDateStr];

我意识到CoreData 不会将日期存储为NSDate,但它究竟是如何存储的以及如何绕过警告?

CoreData 实体:

更新:

错误出现在 obsLastUpdated 被声明为 NSString 的类中。更改为 NSDate,一切都很好。

【问题讨论】:

  • 请展示核心数据模型实体的截图。
  • 那么你已经创建了核心数据模型来拥有一个字符串。不是日期。你能显示你的核心数据模式的截图吗?并包含目标代码。
  • 课程代码?出了点问题。告诉我们什么是错的。不是什么是对的。 :-) 当您在核心数据中将属性设置为日期时,它会返回一个 NSDate。你确定你已经完成了一个干净的构建吗?您最近是否将其从字符串更改为日期?
  • 没有。来自实际观察类的代码。定义属性的代码调用 obsLastUpdated
  • 当然....谢谢。它被设置为字符串。你已经解决了我的问题,它实际上是否存储为 NSDate。很好的帮助 - 谢谢。

标签: core-data


【解决方案1】:

只需将其定义为NSDate,而不是NSString

MyEntity *entity = [self.recordDetails first];

NSDate *iPadDate = entity.obsLastUpdated;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多