2013年1月5日土曜日

CoreData error コード



CoreDataのModelを変更すると、往々にして次のようなエラーに出くわします。

persistentStoreCoordinator: Error Error Domain=NSCocoaErrorDomain Code=134100 "The operation couldn’t be completed. (Cocoa error 134100.)"

エラーコードのみ表示され詳細がわからないメッセージですが、エラーコードの定義は"Core Data Constants Reference"にまとめられています。
これまで次のエラーが発生しました。

Cocoa error 1560
NSValidationMultipleErrorsError
Error code to denote an error containing multiple validation errors.

このエラー自体は複数の項目でバリデーションエラーが発生したということですが、私の場合は追加した項目のoptionalにチェックが入っていなかったため必須項目となり、既存レコードでは値がnilであるため発生しました。その他データ型の不一致などでも発生するでしょう。

Cocoa error 134100.
NSPersistentStoreIncompatibleVersionHashError
Error code to denote that entity version hashes in the store are incompatible with the current managed object model.

既存レコードとModelの定義に不整合が生じている場合に発生します。
既存レコードを残しModelの定義を変更する場合は"Add Model Version ..."でModelを追加し、既存レコードをコンバートする必要があります。
Core Data 自動マイグレーションを参照してください。