[XCODE] CoreDataを用いてデータ管理を行う方法。検索編!!!!
CoreDataを用いたデータ管理。今回は、永続化しているデータを検索する
方法を記載したいと思います。CoreData関連の記事は今回でいったん、最終回(*゚▽゚)ノ
今回の検索を行う為には、準備編で作成するNSManagedObjectContextが必要ですので、 そちらも参照頂けると幸いです(((o(*゚▽゚*)o)))
- CoreDataを用いてデータ管理を行う方法。準備編。
- CoreDataを用いてデータ管理を行う方法。登録編!!
- CoreDataを用いてデータ管理を行う方法。更新・削除編!!!
- CoreDataを用いてデータ管理を行う方法。検索編!!!!
どのような条件で、どんな順で検索するのかを指定し、検索クエリを事項します。
検索条件の指定のところで色々と条件を指定できるので、柔軟な検索が可能です。
以下がサンプルコードとなります。
上記で永続化したデータから条件を指定した検索が出来ました。
検索条件を指定するところ(NSPredicate)は、色々と指定できるようです。詳しくは、 Predicate Programming Guideを参考にしてみて下さい。
iOS Core Data チュートリアル
Core Data プログラミングガイド
無事に一通り知識の整理ができて、ブログとしてアウトプットできて良かったなぁ(*゚▽゚)ノ
この記事が、iPhoneアプリ開発者の誰かに役立てば更に嬉しい限りです。
今後も色々と情報発信してきます!
最後までお読み頂きましてありがとうございました。
CoreDataを用いたデータ管理
この記事も含めて、以下のような分類でCoreDataの使い方をブログに書いています。今回の検索を行う為には、準備編で作成するNSManagedObjectContextが必要ですので、 そちらも参照頂けると幸いです(((o(*゚▽゚*)o)))
- CoreDataを用いてデータ管理を行う方法。準備編。
- CoreDataを用いてデータ管理を行う方法。登録編!!
- CoreDataを用いてデータ管理を行う方法。更新・削除編!!!
- CoreDataを用いてデータ管理を行う方法。検索編!!!!
CoreDataで保持するデータを検索する
検索処理は、今までの登録や更新とは違い、少しだけ処理が増えます。どのような条件で、どんな順で検索するのかを指定し、検索クエリを事項します。
検索条件の指定のところで色々と条件を指定できるので、柔軟な検索が可能です。
以下がサンプルコードとなります。
// NSFetchRequestは、検索条件などを保持させるオブジェクトです。 // 後続処理では、このインスタンスに色々と検索条件を設定します。 NSFetchRequest *fetchRequest = [[NSFetchRequestalloc] init]; // 検索対象のエンティティを指定します。 NSEntityDescription *entity = [NSEntityDescription entityForName:@"Setting" inManagedObjectContext:managedObjectContext]; [fetchRequest setEntity:entity]; // 一度に読み込むサイズを指定します。 [fetchRequest setFetchBatchSize:20]; // 検索結果を保持する順序を指定します。 // ここでは、keyというカラムの値の昇順で保持するように指定しています。 NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"key" ascending:YES]; [fetchRequest setSortDescriptors:[NSArrayarrayWithObject:sort]]; // 続いて検索条件を指定します。 // NSPredicateを用いて、検索条件の表現(述語)を作成します。 NSPredicate *pred = [NSPredicate predicateWithFormat:@"key = %@ or key = %@ or key = %@", @"dateFormat", @"dateFormat2", @"dateFormat3"]; [fetchRequest setPredicate:pred]; // NSFetchedResultsControllerを作成します。 // 上記までで作成したFetchRequestを指定します。 NSFetchedResultsController *fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:context sectionNameKeyPath:nil cacheName:nil]; // データ検索を行います。 // 失敗した場合には、メソッドはfalseを返し、引数errorに値を詰めてくれます。 NSError *error = nil; if (![fetchedResultsController performFetch:&error]) { NSLog(@"Unresolved error %@, %@", error, [error userInfo]); } // 検索結果をコンソールに出力してみます。 // fetchedObjectsというメソッドで、検索結果一覧を配列で受け取れます。 NSArray *moArray = [fetchedResultsController fetchedObjects]; for (int i = 0; i < moArray.count; i++) { NSManagedObject *object = [moArray objectAtIndex:i]; NSString *key = [object valueForKey:@"key"]; NSString *value = [object valueForKey:@"value"]; NSLog(@"key=%@, value=%@", key, value); }
上記で永続化したデータから条件を指定した検索が出来ました。
検索条件を指定するところ(NSPredicate)は、色々と指定できるようです。詳しくは、 Predicate Programming Guideを参考にしてみて下さい。
参考資料
以下を参考資料にブログを記載しました。ありがとうございました☆iOS Core Data チュートリアル
Core Data プログラミングガイド
最後に
CoreDataについて知識が曖昧だったので、準備編から検索編まで、調べたり実装したりしながら書いてきました。無事に一通り知識の整理ができて、ブログとしてアウトプットできて良かったなぁ(*゚▽゚)ノ
この記事が、iPhoneアプリ開発者の誰かに役立てば更に嬉しい限りです。
今後も色々と情報発信してきます!
最後までお読み頂きましてありがとうございました。