2

Core Data とNSFetchedResultsController.

私のデータモデルは次のようになります。

Productと呼ばれる 1 対多の関係を使用しdataLinesます。dataLineエンティティにはプロパティ name がありますtheWeek

Productすべての場所を取得したいdataLines.theWeek == someValue。これは、サブクエリを使用して簡単に実行できます。しかし、これはすべてのデータラインを返します。NSPredicateを返すProductとサブセットを作成することは可能dataLines == someValueですか?

4

3 に答える 3

8

達成したいことは、次の 2 つの方法で達成できます。

サブクエリの使用

[NSPredicate predicateWithFormat:@"SUBQUERY(dataLines, $x, $x.theWeek == %@).@count > 0)", [NSNumber numberWithInt:18]];

または ANY 修飾子

[NSPredicate predicateWithFormat:@"ANY dataLines.theWeek == %@", [NSNumber numberWithInt:18]];

複数の値に対してチェックする必要がある場合は、次のこともできます。

[NSPredicate predicateWithFormat:@"SUBQUERY(dataLines, $x, $x.theWeek == %@ or $x.theWeek == %@).@count > 0)", [NSNumber numberWithInt:18], [NSNumber numberWithInt:19]];

ANYモディファイヤにも同じことが適用できます。ANY ... OR ANY ....

コードを共有していただけると助かります。

PSスカラー値を使用せずtheWeek、数値であると思います。

それが役に立てば幸い。

于 2012-06-02T11:15:39.650 に答える
1

dataLine代わりにプロパティ をフェッチする必要があります。ProductあなたとdataLineエンティティが関係によって接続されていると仮定すると、someRelationこのコードを試すことができます。

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:[NSEntityDescription entityWithName:@"dataLine" inManagedObjectContext:self.managedObjectContext]];
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"dataLines.week == %@",theWeek]];

NSMutableArray *tmpProduct [[NSMutableArray init] alloc];
NSMutableArray *tmpArray = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];

for (dataLine *theDataLine in tmpArray);
NSLog(@"%@",theDataLine.someRelation.name);
tmpProduct = theDataLine.someRelation.name;

次に、電話して電話tmpProductをかけるか、製品をテーブルビューで表示できます

于 2012-06-02T10:56:26.883 に答える
0

「製品」エンティティのフェッチ リクエストを作成します。

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity: [NSEntityDescription entityForName:@"Product" ...]]

次に、'ANY' を指定して Product のプロパティ/属性を使用して述語を作成します。

[fetchRequest setPredicate:
  [NSPredicate predicateWithFormat:@"ANY dataLines.theWeek == %@", <whatever week>]];

次に、フェッチを実行して、少なくとも 1 つの を含む Product の配列を取得します<whatever week>

一般に、「管理対象オブジェクトの取得」、NSPredicate、および関連ドキュメントを参照してください。

于 2012-06-01T23:25:18.373 に答える