フクの非日常

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

CoreDataでGroup Byを使う方法

iPhoneアプリでは永続的なデータはCoreDataを使って保存する。保存されたデータを取り出すのもCoreDataフレームワークを利用する。SQLiteで直接SQLを発行することもできるそうだが、手続きが大変、コードが長くなる等のためCoreDataを使うほうが簡単と理解している。そのCoreDataに格納したデータをグループ化して取り出そうというのが今回のテーマ。平たく言うと、読書記録をCoreDataに格納しておいて、月あたりの読書数の合計を取り出す方法を実装しようとしている。

キーワードを変えながら検索していったところどうも「setPropertiesToGroupBy」を使うとGroup By的なデータの引き方ができる模様。サンプルコードも紹介してある。
http://ameblo.jp/tamiorock/entry-11125409042.html
CoreDataありのプロジェクトを出力し、サンプルコードを乗せてみる。ビルドは通るがwarningが1件。そのまま実行すると落ちる。指摘の内容を見ると

warning: 'NSFetchRequest' may not respond to '-setPropertiesToGroupBy:'

というものである。要はNSFetchRequestクラスには 'setPropertiesToGroupBy'なんてメソッドはありませんよ。と言っている。おかしい、そんなはずはない。確かにサンプルコードはNSFetchRequestを使っているではないか!しばらく悩んだが、xcodeの機能でメソッドの定義もとへジャンプする機能がある。そこでsetPropertiesToGroupByの定義を辿ろうとすると、飛べない。他のメソッドでジャンプすると。NSFetchRequest.hに飛んだ。たしかにヘッダにsetPropertiesToGroupByの定義がない。ということは。。。CoreDataがsetPropertiesToGroupByに対応していないということか。

NSFetchRequestのClass Referenceを調べると'setPropertiesToGroupBy'はiOS5から使える。今の自分の環境はiOS4.2。xcodeのバージョンを上げないといけないことが判明した。そういえば自分のxcodeは1年前にインストールしたまま使い続けている。ストーリーボードも入っていないし古くなっているんだな。。。ということでxcodeのバージョンアップにとりかかることにした。Snow Leopard向けのxcodeはApple Developerから入手することができた。ダウンロード&バージョンアップが完了すると晴れてiOS5に対応したxcode4.2が起動できた。
これでsetPropertiesToGroupByが試せるっっ!と思ったのも束の間、UITableViewかつCoreDataを始めから持ったタイプの雛形プロジェクトが作れなくなっている。前のバージョンだといきなりデータがぽちぽち追加できて便利だったのに。空のプロジェクトにCoreDataは付けられるのでそれで試すのか。バージョン違いの操作に慣れるのに一苦労しそう。。。

と思った矢先「UITableViewかつCoreDataを始めから持ったタイプ」はMaster-Detail Applicationで作ることができた。これで試してみよう〜

コメント


管理者にだけ表示を許可する
 

 

トラックバック

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。