Как показать несколько категорий по категориям в collectionView в Swift? - PullRequest
0 голосов
/ 08 мая 2019

Мне нужно показать несколько категорий для каждой категории в представлении сбора, так как в CoreData одна категория имеет много категорий, и категории имеют тип NSset при написании этой строки

fetchRequest.predicate = NSPredicate(format: "category.categories == %@", (category?.categories!)!)

выдает ошибку CoreData: ошибка: SQLCore dispatchRequest: запрос обработки исключения: здесь не разрешен ключ to-many с userInfo (ноль)

1 Ответ

0 голосов
/ 08 мая 2019

Вам не нужно использовать строку формата NSPredicate (но это самое дешевое решение - имейте в виду) каждый раз, когда вам нужно фильтровать при получении.

Вы можете использовать predicateWithBlock initializer:

fetchRequest.predicate = NSPredicate { object, bindings -> Bool in
    guard let object = object as? Category else { return false }
    return object.categories == category?.categories
}

Или даже Array.filter:

guard let allCategories = try? moc.executeFetchRequest(fetchRequest) as? [Category] else { return }
let result = allCategories.filter { $0.categories == category?.categories }
...