CoreData:1対多対多の関係へのクエリ

user2924482

私はこのようなコアデータモデルを持っています:

ここに画像の説明を入力してください

そして、私は特定のスケジュールで劇場を上映しているすべての映画を照会しようとしています。

しかし、NSPredicateを使用してこのクエリを実行する方法がわかりません。

私はこれを試しました:

NSPredicate *moviesPredicate = [NSPredicate predicateWithFormat:@"SUBQUERY (movies, $x, $x.movies.showTimes == %@ AND  $x.movies.theater.nameOfTheater == %@).@count >0", showTime, theater];

しかし、動作しませんでした。私が間違っていることを知っている人はいますか?

私は本当にあなたの助けに感謝します

pbasdf

私はあなたの述べた目的(「...特定のスケジュールで劇場を上映しているすべての映画をクエリする」)から、あなたのNSFetchRequestのエンティティはであると仮定していますMoviesその場合、使用する属性名と関係名はすべて、そのエンティティに関連している必要があります。したがって、劇場名はによって与えられtheaters.nameOfTheater、上映時間はになりますshowTimes.showTimesSchedules与えられたものにはたくさんあるのでMovie、あなたの述語は、showTimes.showTimesあなたの要件に一致するものがある場合、映画を選択する必要がありますしたがって、述語を記述する1つの方法は次のようになります。

NSPredicate *moviesPredicate = [NSPredicate predicateWithFormat:@"theaters.nameOfTheater == %@ AND (ANY showTimes.showTimes == %@)", theater, showTime];

または、ANY句をSUBQUERYとして書き換えることもできます。

NSPredicate *moviesPredicate = [NSPredicate predicateWithFormat:@"theaters.nameOfTheater == %@ AND SUBQUERY(showTimes, $x, $x.showTimes == %@).@count > 0", theater, showTime];

より広い推奨事項として、属性とエンティティの名前を変更します。それは物事をより明確にするのに役立ちます:

  1. エンティティ名は一般に単数である必要があるため、ではなくではMovieなくMovies、でTheatreTheatresありScheduleませんSchedules
  2. 同様に、関係の名前は、それらが1対1であるか多対数であるかを反映する必要があります。したがって、Movieエンティティtheatreはto-oneであるため関係があり、Scheduleエンティティmoviesはto-manyであるため関係があります。

最後に、データモデルを改善できると思います。現在、各映画には1つの劇場しかありません。実際には、映画が複数の劇場で上映されることを想像します!個人的に、私はこのようなモデルを持っているでしょう:

データ・モデル

各だからSchedule一つだけに関係Movieし、1 Theaterしかし、それぞれTheaterに多くのshowingsがあり、それぞれMovieに多くのがありscreeningsます。このモデルを使用すると、クエリを満たすための述語は次のようになります。

NSPredicate *moviesPredicate = [NSPredicate predicateWithFormat:@"SUBQUERY(screenings, $x, $x.theater.nameOfTheater == %@ AND $x.showTime == %@).@count > 0", theater, showTime];

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Firestoreクエリ-1対多の関係

分類Dev

mysqlクエリ-1対多の関係

分類Dev

多対多の関係のクエリ

分類Dev

多対多の関係クエリ。Laravel

分類Dev

CoreData:NSFetchedResultsController1対多対多対多の関係

分類Dev

CoreDataの1対多の逆の関係

分類Dev

Slick 3.0.0:1対多/多対多の関係をクエリする方法

分類Dev

iOS CoreDataの1対多の関係

分類Dev

1対多の関係に対するMYSQLクエリ

分類Dev

Hibernateの1対多の関係に関するクエリ

分類Dev

SpringJPAの1対多の関係に関するhqlselectクエリ

分類Dev

春:どのように多対多の関係にPOSTリクエストへ

分類Dev

Djangoの1対多の関係クエリ

分類Dev

Laravelの1対多の関係クエリ

分類Dev

Django多対1/1対多の関係

分類Dev

1対多対多の関係のNSPredicateSUBQUERY

分類Dev

sqlalchemyの多対多の関係に関するクエリ

分類Dev

1対多の関係を持つjooq単一クエリ

分類Dev

Androidレルム1対多の関係、クエリ

分類Dev

1対多の関係を持つ滑らかなクエリ

分類Dev

1対多の関係LINQ更新クエリ

分類Dev

データベース1対多の関係クエリ

分類Dev

JPQLで1対多の関係をクエリする方法は?

分類Dev

1対多の関係SQLAlchemyをクエリする

分類Dev

SQLでの多対多の関係のクエリ

分類Dev

MySqlでの多対多の関係のクエリ

分類Dev

多対多の関係に関連するLinqクエリ

分類Dev

iosは1つのクエリを多対多の関係で解析します

分類Dev

多対多の関係クエリJPAの問題