.-- --

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 comment(-) trackback(-)
.20 2009

CoreData について (6)

Tasaki です。

今回でひとまず CoreData の簡単な使い方の解説は終了とします。
最後のテーマは、データの抽出方法についてです。

前回、データベースからデータを読み込む手順を取り扱いましたが、あのままではあるエンティティの全てのデータを取り出してしまいます。
当然、データベースから全てのデータを取り出すなんてこと普通はありませんから、条件を満たしたデータだけを抽出する必要がありますよね。
このときに使用するのが、NSPredicate (述語)オブジェクトです。
前回出てきた受信要求 (NSFetchRequest) クラスに、このオブジェクトを設定することで抽出条件を指定することが可能です。
そのためのメソッドがこちらです。
- ( void ) setPredicate:( NSPredicate *) predicate;

また、述語オブジェクトの作成には以下のメソッドを使用します。
+ ( NSPredicate *) predicateWithFormat:( NSString *) format, ... ;

これは、printf()でおなじみの文字列と可変引数を与えて述語を作成します。この引数部分に、条件式を与えることになります。
例えば、MyData エンティティの floatValue が 0 より大きいもの、という条件にしたい場合は以下のように記述します。
NSFetchRequest *request = [[ NSFetchRequest alloc ] init ];
NSEntityDescription *entity = [ NSEntityDescription entityForName: @"Sites" inManagedObjectContext: managedObjectContext ];
[ request setEntity: entity ];
NSPredicate *predicate = [ NSPredicate predicateWithFormat: @"floatValue > 0.0" ];
[ request setPredicate: predicate ];

この後、前回のコードと同じように要求を送ると条件に合致したデータだけが返されます。

なお、条件式の内部では以下の単語が予約語として使われているようです。
AND, OR, IN, NOT, ALL, ANY, SOME, NONE, LIKE, CASEINSENSITIVE, CI, MATCHES, CONTAINS, BEGINSWITH, ENDSWITH, BETWEEN, NULL, NIL, SELF, TRUE, YES, FALSE, NO, FIRST, LAST, SIZE, ANYKEY, SUBQUERY, CAST, TRUEPREDICATE, FALSEPREDICATE


関連記事
スポンサーサイト

Comment

whasegawa
現在CoreDataを使った李iPhoneアプリを開発中のものです。
ブログを拝見させていただき、とても参考になりました。ありがとうございます。
そこで1つ伺えればと思ったことがあるのですが、xcdatamodelを作成し、データベースを定義した後に、各テーブルにサンプルデータ(初期値)を登録しておきたい場合に、xcode(GUI)を使った方法でデータを登録していくことは、可能なのでしょうか?イメージとしては、phpMyAdminを使うような感じです。いろいろ検索しているのですが良い方法が見つからず、困ってしまっています。ご回答叶いましたら幸甚です。よろしくお願いいたします。 whasegawa
2010.11.13 13:09
Tasaki
whasegawaさん

確かにGUIでデータを追加するような機能はなかったかもしれないです。
公式ドキュメントには、xmlやplist形式のデータを準備しておいて、コードから追加していく方法が提案されてました。
個人的にはシミュレータで初期データ作成コードを走らせて、sqlite形式等で保存する方法が一番手っ取り早いかなと思います。
根本的な解決法ではありませんが…
2010.11.15 10:29
whasegawa
Tasaki様

お忙しいところご回答いただきありがとうございました。

Firefoxのプラグインで、sqliteファイルを編集できるものがありました。

後は、xcdatamodelから空のsqliteファイルさえ作成できれば、やりやいことが
簡単にできそうです。

何か良い方法があればと思い、もう少し調べてみたいと思います。

お役に立ちそうな情報がありましたら、シェアさせていただければと思います。

それでは、失礼致します。
2010.11.16 00:40

Post comment

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

Trackback

trackbackURL:http://appteam.blog114.fc2.com/tb.php/56-ae90ec59

ブログ内検索

関連リンク

製品情報

最新記事

カテゴリ

プロフィール

neoxneo



NEXT-SYSTEM iOS Developers Blog


  • UTO:
    カナダ版iPhone4Sは、マナーモードでシャッター音がならない…


  • Ehara:
    ...


  • Hayate:
    ...


  • Tasaki:
    Developer登録完了...したのはいいけど


  • Ueda:
    ...



リンク

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