読者です 読者をやめる 読者になる 読者になる

音楽とお酒とものづくりと

Web初心者の新人エンジニア(園児neer)奮闘記

xcode7 + Swift2によるCoreDataを用いたデータベース利用の際にハマったこと

今回,CoreDataによるデータベースの利用にあたって,以下のサイトが非常に参考になりました.
http://qiita.com/watanave/items/4da9f4bc97247f780af8
基本的には上記のとおり進めていくと問題ありませんでした.


ただし,最後の最後にエラーが出てしまいました.
エラー内容は以下のとおり

CoreData: warning: Unable to load class named ‘(プロジェクト名).(モデルクラス名)’ for entity ‘(モデルクラス名)’. Class not found, using default NSManagedObject instead.


調べてみると,以下のように似たようなエラーの解決策をまとめた日本語の記事がいくつかありましたが,これでは解決しませんでした.
http://qiita.com/hanoopy/items/765d29f83a99eef6b49b


そこでもう少し調べてみると以下の記事に回答が載っていました.
http://telliott.io/node/1305/


解決方法は以下のとおりです(英語ですが,リンク先に画像が載っています).

Navigator Areaより,(プロジェクト名).xcdatamodeldファイルをクリックし,
CONFIGURATIONSのDefaultを選択.
すると定義したエンティティモデルが表示されます.
そのエンティティモデルのClassの部分を(モデルクラス名)に変更するとエラーがなくなりました.


先ほどの日本語記事での解決方法で設定を変更してしまったからか,
Classが.(プロジェクト名)(モデルクラス名)
となっていたため,うまく読み込むことができなかったようです.
デフォルトでは.(モデルクラス名)となってしまい,エラーが出ているよう.


リンク先の英語記事によるとxcode7がまだベータ版であることにより起こっているっぽいです(ホンマかどうかは知らない).


あと,一番最初に紹介しました記事のままだとswift2ではいくつかの文法エラーが出てしまいます.(asによる型変換やif let構文など)
まだoptional型などの扱いに関して理解しきれていないので,もう少し勉強し,またここに理解した分を載せられればと思います.