【发布时间】:2016-02-08 16:23:38
【问题描述】:
我有一个日期字符串:Sun, 07 Feb 2016 21:16:21 +0000
并且需要它:dd.MM.yyyy
以下方法抛出fatal error: nil
if parsedElement == "date" {
if currentArticle.date.isEmpty {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss Z"
let tempDate = dateFormatter.dateFromString(str)
dateFormatter.dateFormat = "dd.MM.yyyy"
let convertedDate = dateFormatter.stringFromDate(tempDate!)
currentArticle.date = convertedDate
}
}
调试:
str String "2016 年 2 月 7 日星期日 21:16:21 +0000"
tempDate NSDate? 2016-02-07 21:16:21 UTC 0xe41bc67eba500000
convertedDate 字符串“07.02.2016”
看起来不错,但在我发布“currentArticle.date = convertedDate”的那一刻,它会显示convertedDate = nil
想法?
PS:currentArticle.date == isEmpty
编辑: if 循环运行 5 次。
如果我给currentArticle.date = str(只有日期字符串),这就是调试器所说的:
1. str String "Sun, 07 Feb 2016 21:16:21 +0000"
2. str ""
3. str String "Thu, 04 Feb 2016 21:18:34 +0000"
4. str ""
5. str String "Thu, 04 Feb 2016 18:57:14 +0000"
【问题讨论】:
-
'release "currentArticle.date = convertDate"'是什么意思?
-
发布我的意思是“继续执行程序”。
-
convertedDate 它是一个字符串。什么是 currentArticle.date 属性类型 String 或 NSDate ?
-
好的,所以你说的是用断点在该行停止它?然后继续执行程序? convertDate 是一个局部常量,一旦你离开
if currentArticle.date.isEmpty块,convertedDate 将不再存在,这是意料之中的。 -
就像在我的编辑中发布的一样,我尝试在没有日期格式化程序的情况下运行该方法。有 3 个“parsedElement”。 3 日期字符串。我的方法第一次使用日期格式化程序运行时,很好。但是第二个循环,“if currentArticle.date.isEmpty”!= isEmpty。我不明白,为什么这会导致异常。循环是否应该跳过这一轮并继续第三轮,其中 currentArticle.date 再次为空?
标签: ios string swift date formatter