エラー概要
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上でやってみる。
(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の自動生成時のバグじゃないの。