CoreData - 安全地检查CoreData对象的值

时间:2016-10-29 23:51:12

标签: ios swift core-data

我目前安排代码的方式,以下行将针对各种托管对象上下文运行。一些获取的实体将具有“complededDate”,而其他实体将没有“completedDate”属性。

let task = retrieved_MgObjCntxt[(indexPath as NSIndexPath).row]
if let itemFinDate = task.value(forKey: "completedDate") {
      ...

我想通过使用if-let,如果失败那么它就没事了......但是我得到了一个“lldb”崩溃。我一直在尝试使用do / catch和throw解决它,但我并不是很熟悉它们是如何工作的。

有没有办法安全地检查,如果“completedDate”不存在,它只是跳过if-closure中的代码?

2 个答案:

答案 0 :(得分:1)

let task = retrieved_MgObjCntxt[(indexPath as NSIndexPath).row]
if task.entity.propertiesByName.keys.contains("completeDate") {
    ...
}

答案 1 :(得分:0)

您可以使用以下命令查找对象实体类型的所有键:

managedObject.entity.attributesByName

然后查看该词典的密钥是否包含" completedDate"