在循环遍历核心数据对象数组时,访问日期类型属性会失败

时间:2017-12-12 02:55:27

标签: ios swift core-data

我有一个带有属性名称(String)和日期(Date)的coredata实体。我添加了500条记录。

在循环访问NSManagedObjects以访问name属性时 - 工作正常。

此代码有效

for transaction in self.transactions 
{
   print(transaction.value(forKeyPath:"name") as! String)
}

但是在循环访问对象以访问日期属性时 - 它会随机失败,并显示错误消息“致命错误:在解包可选值时意外发现nil”

此代码失败。

for transaction in self.transactions 
{
    print(transaction.value(forKeyPath: "date") as! Date)
}

任何帮助?

2 个答案:

答案 0 :(得分:1)

这是因为即使在不确定值的类型是“日期”或“字符串”的情况下,您也会强制展开它,而应该安全地尝试解开它:

for transaction in self.transactions {
    if let date = transaction.value(forKeyPath: "date") as? Date {
         print("It's a date: \(date)")
    } else if stringValue = transaction.value(forKeyPath: "name") as? String {
         print("It's a string: \(stringValue)")
    }
}

答案 1 :(得分:0)

请检查您是否在核心数据中存储了正确的日期。