2016-10-29 4 views
0

現在、自分のコードを整理している方法で、次の行がさまざまな管理オブジェクトコンテキストに対して実行されます。フェッチされたエンティティの一部には「complededDate」があり、他のエンティティには「completedDate」属性はありません。CoreData - 安全にCoreDataオブジェクトの値を確認する

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

私は、これが失敗した場合、それは大丈夫だろうと、あれば、聞かせて使用して思った...しかし、私は「lldb」クラッシュを取得しています。私はdo/catchとthrowを使ってそれを解決しようとしてきましたが、私はその仕事の仕方に精通していません。

"completedDate"が存在しない場合は、if-closure内のコードをスキップするだけですので、安全にチェックする方法はありますか?

答えて

1
let task = retrieved_MgObjCntxt[(indexPath as NSIndexPath).row] 
if task.entity.propertiesByName.keys.contains("completeDate") { 
    ... 
} 
が含まれているかどうかを確認します
0

あなたが使用してエンティティタイプのオブジェクトのためにあなたはすべてのキーを見つけることができます:

managedObject.entity.attributesByName 

し、その辞書のキーは「completedDate」

関連する問題