1. hanoopy

    No comment

    hanoopy
Changes in title
-【SwiftでCoreDataを使う】NSDataObjectSubclassを作っても、Entityが「Class not found」になるとき
+【SwiftでCoreDataを使う】NSDataObjectSubclassを作っても、Entityが「Class not found」になるときの解決策
Changes in body
Source | HTML | Preview

エラー概要

SwiftでCoreDataにアクセスする処理を書いて実行すると、下記のようなエラーになった。

CoreData: warning: Unable to load class named 'SampleEntity' for entity 'SampleEntity'. Class not found, using default NSManagedObject instead.

エクスプローラ
SampleEntity.swiftファイルがプロジェクト上にあり、SampleEntityクラスも作成済みである。

解決策

http://stackoverflow.com/questions/25076276/unabled-to-find-specific-subclass-of-nsmanagedobject
質問サイトの中で下記ドキュメントが示されている。
https://developer.apple.com/library/mac/documentation/Swift/Conceptual/BuildingCocoaApps/WritingSwiftClassesWithObjective-CBehavior.html
ドキュメントで「Entity」でページ内検索すると、ヒットした箇所に、Xcode上でエンティティのClassについて、「Name:Person、Class: MyCoreDataApp.Person」に設定するという説明がある。

これを参考にして、自分のXcode上でやってみる。

ad53c98a78af656ecbe19886b872884d.png
(1)左ペインで「.xdatamodeld」ファイルを選択、(2)「ENTITIES」から該当のエンティティを選択、(3)右ペインで「Show model inspector」を選択、(4)「Entity」の「Class」名入力欄を表示させる。ここで
「SampleEntity」→「CoreDataaSample.SampleEntity」
に変更する。

修正後の動作状況

前提条件

元々のプログラムは、下記のサイトを参考にさせて頂きました。
http://hidef.jp/post-652/
更に元々は、新プロジェクト作成のサンプル「Master-Detail Application」である。

これって「.xdatamodeld」ファイルもGUIで作成したし、NSDataObjectSubclassクラスも自動生成だ。Xcodeの自動生成時のバグじゃないの。

ソース

アップしました。
https://github.com/hanoopy/CoreDataaSample