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

时间:2015-05-12 14:50:14

标签: ios objective-c swift core-data

我是iOS和CoreData的新手,所以如果这太基础我很抱歉。

我正在试图弄清楚为什么private def minMaxValue (valuesList: List[Option[Any]], min: Boolean): Option[Int] = valuesList.flatten match { case Nil => None case xs: List[Int] => Some(if (min) xs.min else xs.max) case xs: List[Long] => Some(if (min) xs.min else xs.max) } 的有效但奇怪的日期正在转变为0000-01-01T00:00:00Z。例如:

nil

我认为这个日期应该有效。它符合RFC和ISO规范。

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

(不是说JS是相关的,而是作为肠道检查......)

我尝试在调试器中插入它,但在看到任何有用的东西之前它会进入汇编。

这是来自new Date("0000-01-01T00:00:00Z"); //Sat Jan 01 0 07:00:00 GMT+0700 (ICT) GUI中的配置吗? 这是故意的行为吗?限制?

1 个答案:

答案 0 :(得分:0)

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

这表明对于使用NSDateFormatter的Swift,它无法解析0000年。

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

  1. Swift和Objective C使用相同的代码路径解析日期
  2. 目标C在解析Date
  3. 类型的核​​心数据属性的日期时使用日期字符串格式化程序