У меня есть две сущности в CoreData, которые называются «Пользователь» и «Купон», они связаны отношениями «многие ко многим». Я хотел получить все купоны, кроме тех, которые принадлежат user.userId = 1, где userId - это NSString.
Я использовал: [NSPredicate predicateWithFormat:@"NOT(ANY couponOwners.userId = %@)", @"4"];
быть предикатом моего fetchedResultsController
Но не фильтрация с правильными результатами. У одного из пользователей в списке «Владелец купона» все еще используется userId = 4.
Может кто-нибудь помочь? Я застрял довольно долго. Заранее спасибо.
1 ответ
Предикаты Core Data с «NOT ANY» не работают (похоже, это ошибка Core Data). На самом деле
[NSPredicate predicateWithFormat:@"NOT(ANY couponOwners.userId = %@)", @"4"];
Возвращает тот же набор результатов, что и
[NSPredicate predicateWithFormat:@"ANY couponOwners.userId != %@", @"4"];
Что, конечно, неправильно. В качестве обходного пути вы можете использовать ПОДЗАПРОС:
[NSPredicate predicateWithFormat:@"SUBQUERY(couponOwners, $c, $c.userId == %@).@count == 0", @"4"]
Похожие вопросы
Связанные вопросы
Новые вопросы
core-data
Core Data - это объектно-ориентированная платформа Apple для iOS, iPadOS, tvOS, watchOS и macOS. Xcode предоставляет редактор объектной модели для определения сущностей, атрибутов и отношений.