2009-09-22
CoreDataを使う場合のトラブルシュート
CoreData | |
![]()
Macでのデータベース取り扱いが楽になるというCoreDataですが、確かにMac用アプリでは開発が楽になるようです。というのも、iPhoneでは色々とコーディングが要求されてしまうから。結果、はまってしまうところがでて、それが解消されにくい場合は、思い切ってFMDBで行うほうが幸せかもしれません。
試行錯誤しつつ組み込みに挑戦していますが、エラーが完全には解消されず詰まっている状態です。現状に至るまでに分かったいくつかのはまりポイントについてまとめてみます。
+entityForName: could not locate an NSManagedObjectModel for entity...
xcdatamodel内でEntityの名称が間違っている場合や、NSEntityDescriptionを生成する以前にNSPersistentStoreCoordinatorなどを適切に生成していない、など。
Z_PKなどの、頭にZが付くコラムが足りないと表示される
sqliteファイルを手動作成した場合、CoreDataに用いるsqliteのテーブルおよびコラム名は、イニシャルがZで始まる必要があります。(NameならZNameになる、など)
また、CoreDataが用いる専用のテーブルを作成する必要もあります。
参考:Core Data Error: Can’t Find Model for Source Store
CREATE TABLE Z_PRIMARYKEY (Z_ENT INT Primary Key, Z_NAME VARCHAR, Z_SUPER INTEGER, Z_MAX INTEGER);
CREATE TABLE Z_METADATA (Z_VERSION INT Primary Key, Z_UUID VARCHAR(255), Z_PLIST BLOB);
Entityを収めたテーブルにも、システムが管理に用いるためのコラムの追加が必要です。
Z_OPT INTEGER
Z_PK INTEGER PRIMARY KEY