У меня есть объект Item
и объект Wishlist
. Элемент может быть в нескольких списках пожеланий, а список пожеланий может содержать несколько элементов.NSPredicate для двусторонних отношений с использованием Core Data?
С WishlistTableViewController
, в котором перечислены все списки пожеланий, я хочу выбрать один и показать все элементы внутри выбранного. Я отправляю элемент Wishlist
на свой ItemTableViewController
, но я застреваю при создании предиката.
В принципе, я хочу получить все предметы из данного списка желаний.
В SQL, это было бы что-то вроде:
SELECT * FROM Item WHERE WishlistItem.wishlist_id = wishlist.wishlist_id
(может отсутствовать внутренние соединения, это очень грубый набросок, я не закодированы SQL в годах)
Из Конечно, Core Data автоматически создает эту среднюю таблицу, когда у нас есть отношения «многие ко многим», так как я могу создать аналогичный предикат, используя NSPredicate
? У меня есть мой контролер результатов, получающий все предметы на данный момент, без предиката (это nil
). Это поведение по умолчанию, если пользователь не приходит из определенного списка пожеланий.
Вот что моя установка! Я забыл объяснить это так же хорошо, как и вы, но в моем проекте Core Data, вот как он настроен. Я делаю «NSFetchRequest» для загрузки tableview вверх, поэтому я использовал предикат. Можно ли загрузить таблицу с помощью 'NSSet' в методе' cellForRowAtIndexPath: '? О, и да, мои 'NSManagedObjects' подклассы. – swiftcode
Вам придется сортировать набор в массив, чтобы вы знали, какой элемент использовать для какой ячейки. Вы можете либо сделать отдельную выборку с дескриптором сортировки (который предоставит вам массив), либо получить набор, как я описал, и отсортировать его с помощью 'sortedArrayUsingDescriptors:'. –