Вам не нужно использовать строку формата 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 }