【发布时间】:2018-06-26 17:26:28
【问题描述】:
我正在尝试获取第一条记录的值,即“2018-05-04 09:00:00 +0000”。当我打印出 `firstRecord' 时,我会在终端中得到一个可选值:
可选(2018-05-04 09:00:00 +0000)。
然后我试着像这样打开它:
if dailyArray.count == 0 {
print("no record was found")
}else{
guard let firstRecord : String = dailyArray[0]["startTime"] as! String else {return}
let firstRecordArray = firstRecord.components(separatedBy: " ")
print("data exist \(firstRecordArray[0])")
}
现在 Xcode 给我一个错误,说你正在尝试解开一个非可选值。
知道我在哪里犯错了吗?
【问题讨论】:
-
dailyArray是什么类型?确切的错误信息是什么? – 会不会是字符串“optional(...)”存储在字典中,即创建字典时已经出现问题? -
optional(..)带有小写“o”?你是如何创建那个字典/数组的?你能打印firstRecord.utf16.count吗? -
as!确实强制展开,所以它不是可选的。使用as?。 -
该输出表明您实际上有一个
Date值,而不是一个String值。 -
@rmaddy 它可能是
Date或String,但如果它是Date对象,它会因强制施放而崩溃。因此,正如所建议的那样,它的创建可能是错误的,并且应该在那里完成解包。即使小写的“o”看起来很奇怪。
标签: swift optional forced-unwrapping