循环访问核心数据对象数组时随机访问日期类型属性失败
Posted
技术标签:
【中文标题】循环访问核心数据对象数组时随机访问日期类型属性失败【英文标题】:Accessing Date type attribute failing randomly while looping through array of core data objects 【发布时间】:2017-12-12 02:55:27 【问题描述】:我有一个 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)
有什么帮助吗?
【问题讨论】:
【参考方案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)")
【讨论】:
【参考方案2】:请检查您是否在核心数据中存储了正确的日期。
【讨论】:
以上是关于循环访问核心数据对象数组时随机访问日期类型属性失败的主要内容,如果未能解决你的问题,请参考以下文章
谓词因从 Core Data 获取属性类型为“NSDate”对象的对象而失败