Xcode 8 では CoreData 用のファイルは automatic になったんだって
仕事でアプリを作る必要があり、CoreData も使おうと。ようやく作り方にも慣れてきたところで、まずはモデリングして、次に、Editor -> Create NSManagedObject Subclassess... を選んでファイルを生成してと、慣れた手順でファイルを作ったら、build でエラー発生・・・
エラー内容は、以下の通り。
Showing All Messages
ld: 4 duplicate symbols for architecture x86_64
Showing All Messages
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ナンジャコリャ。重複しているファイルがあるので、linker がエラーこきました、とのこと。しっかりしろよ、clang。
調べてみたら、このエラーは必要なライブラリを指定していない時に出るよとのことで、あぁ、そう言えば CoreData を linked framework に指定していなかったなぁ、ってか、そんなこと最近しなくてもよくなった気がしていたんだけど・・と思って、指定してもエラー解消せず・・・
最近 Xcode がアップデートしたので、ひょっとして Xcode の bug じゃないのか?と思って、さらに調べたところ、Xcode 8 から CoreData 用にモデリングしたファイルは自動生成されるようになったんで、Subclassess で生成してしまうと duplicate error が出てしまうと。
自動生成するかの指定は、.xcdatamodeld を選択して、Show the file Inspector の Tools
Version を見るとわかります。Automatic (Xcode 8.0) と書いてあるので、自動生成だと。
全然知りませんでした。Release Note をよく読めってことですかね・・・
でも、便利な機能であることは間違いないなと思いました。これによって、アプリのバージョンアップの際、CoreData のモデルに変更があるとデータが失われてしまうので、migration 必要とかも解消するのかなぁ・・・