循环访问核心数据对象数组时随机访问日期类型属性失败

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】:

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

【讨论】:

以上是关于循环访问核心数据对象数组时随机访问日期类型属性失败的主要内容,如果未能解决你的问题,请参考以下文章

java培训有哪些课程

结合数组和字典属性的数据类型

JavaScript基础语法

谓词因从 Core Data 获取属性类型为“NSDate”对象的对象而失败

需要编写一个谓词来搜索核心数据对象数组属性中的日期(在我的例子中是日期数组)

带有核心数据对象的 NSPredicate