С благодарностью @shallowThought, ответ довольно прост:
Создав свои предикаты, фильтрация использует следующие строка кода:
filteredLines = theLines.filter {myPredicate.evaluate(with: ($0))}
в этом случае theLines является то, что было извлечено из CoreData и myPredicate это все, что я хочу, чтобы фильтровать, например,
let p1 = NSPredicate(format: "lineNumber > 4")
let p2 = NSPredicate(format: "lineNumber < 7")
// let minLineNumberStr = "4"
// let p3 = NSPredicate(format: "lineNumber >= %@", minLineNumberStr) // same as p1, but more flexible
var predArray : [NSPredicate] = []
// Comment out the predicates we DON'T actually use:
predArray.append(p1)
predArray.append(p2)
// predArray.append(p3)
let myPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: predArray)
В этом случае, если предикат содержит переходный атрибут, фильтрация работает как ожидалось (т. атрибут переходного процесса оценивается правильно); при извлечении из основных данных фильтр с свойством переходного процесса НЕ выдает ошибку, но также не возвращает никаких результатов.
ресурсы, которые помогли моей прийти к этому ответу:
Надеюсь, что это будет полезно для других с тем же вопросом, который у меня был.
Просто повторите полученные результаты и выберите объекты, соответствующие вашим критериям фильтра, используя общие методы, такие как 'for' loop,' .filer' или таковые. – shallowThought
@shallowThought - Большое спасибо - это был намек, который мне нужен. Мои результаты воспроизводятся ниже о вероятности того, что другие могут быть там, где я был, и найдут это полезным, но это ваш ответ, который заставил меня смотреть в правильном направлении. – ConfusionTowers