我目前安排代码的方式,以下行将针对各种托管对象上下文运行。一些获取的实体将具有“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中的代码?
答案 0 :(得分:1)
let task = retrieved_MgObjCntxt[(indexPath as NSIndexPath).row]
if task.entity.propertiesByName.keys.contains("completeDate") {
...
}
答案 1 :(得分:0)
您可以使用以下命令查找对象实体类型的所有键:
managedObject.entity.attributesByName
然后查看该词典的密钥是否包含" completedDate"