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

CoreData、自分が遭遇したエラー集

久しぶりにCoreDataを触ったら、やはりというか少し導入に手間取ってしまったので、

以前に気づいていたこともまとめ、今後のためアップいたします。

(ちゃんと理解して使っていないのがよくわかるエラー集になっていますね・・)

※今後もあったら追記していきます。

確か他にも細々とあったと思ったんですが、忘れてしまいました・・

こういうのはちゃんと自分のためにも残しておかないといけませんね。

■coredata動かないとき・・

---------------------------------------------

1 sqliteファイルがdocumentフォルダにコピーされない・・!

そしてどうもそこでエラーが起きているようだ。

モデルを指定している部分、

NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"momd"];

の「ofType」の部分を確認する。

例えばxcodeのテンプレートから出来るファイルだと、

「test.xcdatamodeld」というdatamodelのフォルダ、のような扱いになっているので

「momd」になっているが、自分で作った直後の、単一のファイルの場合「mom」を指定する必要がある。

---------------------------------------------

2 保存は出来るが、その後、アプリを再起動してみてもそこから取れるデータはなぜか0個。

sqliteファイルを開けるアプリ(SQLite Database Browserとか )で見てみると、正常に追記されているように見えるが・・

NSSortDescriptorでDBからソートに使うプロパティを指定できるが、

どうも使えない文字列が存在している模様。

例えば自分が遭遇したのは、「time」というプロパティ名にしていたら、

返ってくるのは常に0件になってしまっていた。

そこで試しに「record」と違う名前にしたら正常に取れるようになった。

※あと、「description」という名前もダメでした。

---------------------------------------------

3 保存した後、すぐデータを取ってみても最後に保存したのが取れない?

アプリを再起動した後だとちゃんと取れるのだが・・

fetchedResultsControllerなど、

coredata関係のオブジェクトがnil以外は現在保存している物を返すようになっている。

なのでもし新規に値を取り直したければ、nilを設定した後に取り直す必要がある。