2017-02-14 13 views
0

一致する名前に対してCoreDataをフィルタリングしようとしていますが、存在する場合はそれを無視するか、新しい名前をコアデータに追加します。私が持っている問題は単純なものでなければなりませんが、私はそれを理解できません。NSPredicateとCoreDataキーコーディングのコンプライアンスの問題

here's a link to a shot of my code

私coredataの値はString型の "trackName" ですが、私は次の例外得続ける:

がキャッチされない例外により 'NSUnknownKeyException'、理由にアプリを終了する:「[valueForUndefinedKey: ]:このクラスは、キーtrackNameのキー値コーディングに準拠していません。 '

どうすればよいですか?フェッチリクエストが文字列のためのものであることが明確ではないのですか?

+0

を試してみてください。郵便番号!ソリューションはかなりシンプルですが、スクリーンショットからコードを再入力する意思はありません。 – vadian

+0

フィードバックいただきありがとうございます!私はコードを次回に投稿します(必然的に)より多くの助けを頼むhaha – AaronBeReal

答えて

0

あなたはNSFetchRequestのインスタンスにvalue(forKey:)を呼び出しているが、そのキーは、あなたのTrackエンティティを表すNSManagedObjectインスタンスのために定義されています。

フェッチ要求は、コアデータクエリを表すオブジェクトです。あなたのコードに基づいて、trackNameのプロパティがすべてTrackのエンティティで一意であることを確認しようとしていると仮定しています。フェッチ要求を​​にして、そのメソッドから返された配列が空であることを確認する必要があります。

+0

ありがとう@DaveWeston、これは本当に役立ちます。 「trackName」がすでに存在する場合は、重複するトラックエンティティに入力していないことを確認しようとしていました。私はコアデータ(コーディングでは一般的に正直である)を初めて知ったので、私のクエリで取得されたビットにアクセスする方法は明確ではありませんでした – AaronBeReal

0

このいずれかにあなたのコードを更新し、画像を投稿しないでください

if result == nil { 
    //result is null because you entered string is not found the valueForkey is also not found in your result 
    print("new entry") 
}else{ 
    print("added") 
} 
関連する問題