ios - CoreData类型的`Date` 将 `0000 01 01T00:00:00Z` 转换为 `nil`

  显示原文与译文双语对照的内容

我是iOS和CoreData的新手,所以我很抱歉如果这太简单了。

我正试图找出为什么valid-but-odd的0000-01-01T00:00:00Z 日期被转换为 nil 。 比如:


calculatedAttrMapping.valueTransformer(@"0000-01-01T00:00:00Z");//nil

这个日期应该可以,我想。 它是通过RFC和ISO规范有效的。


new Date("0000-01-01T00:00:00Z");//Sat Jan 01 0 07:00:00 GMT+0700 (ICT)

( 这并不重要,但作为检查。)

我尝试在调试器中单步执行它,但在看到任何有用的内容之前,它转到程序集。

这是来自 .xcdatamodeld GUI中的配置? 这是有意行为限制?

时间: 原作者:


let dateStringFormatter = NSDateFormatter()
dateStringFormatter.dateFormat ="yyyy-MM-dd'T'HH:mm:ssZ"
var d = dateStringFormatter.dateFromString("0001-01-01T00:00:00Z")

返回 Some"Jan 1, 1, 6:42 AM"


let dateStringFormatter = NSDateFormatter()
dateStringFormatter.dateFormat ="yyyy-MM-dd'T'HH:mm:ssZ"
var d = dateStringFormatter.dateFromString("0000-01-01T00:00:00Z")

返回 nil

这表明,对于Swift使用 NSDateFormatter,它不能解析 0000 年。

如果我要说这适用于CoreData案例,这里有两个大的假设。

  1. Swift和 Objective C 解析使用相同代码路径的日期
  2. Objective C 使用日期字符串格式化程序来分析类型为日期的核心数据属性时的日期
原作者:
...