我查看了其他问题,并看到了答案的一瞥,但没有一个有效。
这是我的情况,我有两个对象“菜单”和“餐厅”。菜单是我拥有所有菜单项的地方,“餐厅”是不同餐厅的名称。所以:
Menu Object - menuId - name - protein - restaurantID(一对一)
餐厅对象 - restaurantID(一对多) - 名称
当用户给我餐厅名称时,我想返回菜单项。在 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)'
有人可以帮忙吗?我想避免必须进行两次提取(一次用于餐厅 PK,另一次用于菜单项),我相信应该有更合适的解决方案。