我有一个带有属性名称(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)
}
任何帮助?
答案 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)
请检查您是否在核心数据中存储了正确的日期。