CoreDataを用いて保存したデータの削除を行うときに起きたエラー。
削除するのが原因で起きたというよりは、NSPredicateを使ったことで起きたエラーです。
‘NSInvalidArgumentException’, reason: ‘keypath XXXX not found in entity
‘
環境
Swift 4.2
Xcode 10.1
原因と解決方法
Xcode 10.1
原因と解決方法
NSPredicateの引数の文法が間違っていました。
let predicate = NSPredicate(format: "%K = %K", "name", word.name)
こんな感じに削除するデータを指定していたのですが、この部分が間違いでした。
正しくは以下の通り。
let predicate = NSPredicate(format: "%K = %@", "name", word.name)
「%K」というのは置き換えられた後に変数としてみなされるもので、「%@」は置き換えられた後に文字列としてみなされ、ダブルクォーテーションが付けられるものです。
「%K」と「%@」が少しややこしいので間違えないようにしなければなりませんね。
コメント