Использование NSPredicate для фильтрации массива строк из установленного свойства NSManagedObject - PullRequest
1 голос
/ 10 февраля 2020

Предположим, у меня есть NSArray из NSManagedObject объектов (извлеченных из базовых данных) типа Game и второго объекта Genre, который имеет только одно свойство name.

let games: [Game] = []

class Game: NSManagedObject {
    @NSManaged public var title: String?
    @NSManaged public var genres: NSOrderedSet?
    @NSManaged public var publishers: NSOrderedSet?
    @NSManaged public var tags: NSOrderedSet?
}

class Genre: NSManagedObject {
    @NSManaged public var name: String?
}

let genres: Set<String> = ["Racing", "Strategy", "Fighting"]

Если у меня есть Set жанров, как указано выше, как использовать NSPredicate для фильтрации игр из массива, где хотя бы один жанр из набора соответствует тегам в любой игре. Или мне просто сделать типичный для л oop?

1 Ответ

0 голосов
/ 12 февраля 2020

Использование NSPredicate

let predicate = NSPredicate(format: "ANY genres IN %@", genres)

Использование filter

let filtered = games.filter {
    !$0.genres.intersection(genres).isEmpty
}
...