0

現在、データベース エンティティ ExData のすべての内容を表示するテーブル ビューがあります。

ExData には文字列型の属性タグがあります。

私の問題は、テーブルビューに ExData の内容を表示したいのですが、たとえばタグセットが 2 のエントリのみを表示したいということです。

タグは前のView Controllerから送信されますが、最初に表示されているタグ値エントリを1つだけハードコーディングしたいので、これは後で整理できます

ExDatasArray は変更可能な配列です。

NSManagedObjectContext *managedObjectContext = [自己 managedObjectContext];

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"ExData"];

self.ExdatasArray = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];

上記は、ExData からのデータの取得方法です...

4

2 に答える 2

0

特定のデータをフェッチするには、フェッチ リクエストに述語を追加します。

NSString *theTag = ...
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"tag == %@", theTag];
[fetchRequest setPredicate:predicate];

注: 結果セットをテーブル ビューで表示する場合は、NSFetchedResultsController.

于 2013-07-09T16:58:50.017 に答える
0

あなたの質問を正しく理解できれば、あなたは fetchRequest の結果を制限しようとしています。NSPredicate を使用してクエリを指定し、必要に応じて NSSortDescriptor を使用して並べ替えます。以下では、タグ属性の名前が tag であり、searchTagValue が適切に設定されていると仮定します。

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"ExData"];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"tag == %@", searchTagValue];
fetchRequest.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"tag" ascending:YES]];

NSError *error;
NSArray *results = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
if (!result) {
    // handle error
}
else {
    self.ExdatasArray = [results mutableCopy];
}
于 2013-07-09T17:04:47.140 に答える