私は他の質問を見て、答えを垣間見ましたが、どれもうまくいきませんでした.
これが私の状況です。「Menu」と「Restaurant」の 2 つのオブジェクトがあります。Menu にはすべてのメニュー項目があり、「Restaurant」はさまざまなレストランの名前です。したがって:
メニュー オブジェクト - menuId - name - protein - restaurantID (1 対 1)
レストラン オブジェクト - restaurantID (1 対多) - 名前
ユーザーがレストラン名を教えてくれたら、メニュー項目を返したいと思います。SQL では、次のようになります。
SELECT * FROM ZMENU WHERE zrestaurantId = (SELECT Z_PK FROM ZRESTAURANT WHERE zname="Starbucks")
私は試した
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *e = [[model entitiesByName] objectForKey:@"Restaurant"];
[request setEntity:e];
*NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(restaurant = (SUBQUERY(Restaurant, $x, $x.name like[cd] %@).@count))", restaurantName];
しかし、私はエラーが発生します
'NSInvalidArgumentException', reason: 'Unable to generate SQL for predicate (restaurant == SUBQUERY(Restaurant, $x, $x.name LIKE[cd] "Starbucks").@count) (problem on RHS)'
誰か助けてくれませんか?2 つのフェッチ (レストラン PK 用とメニュー項目用) を行う必要がないようにしたいので、もっと適切な解決策が必要だと思います。