2016-12-25 3 views
0

Извлечение данных ядра, я могу отфильтровать то, что получаю с помощью NSPredicate, но только с использованием постоянных атрибутов, но не переходных атрибутов (as per this article from Apple). Какой метод (ы) можно использовать для дальнейшего фильтрации данных с использованием атрибутов переходного процесса или какого-либо вычислимого свойства?Как фильтровать данные, полученные из данных ядра?

(Этот вопрос является уточнением an earlier question, который был слишком широким.)

+0

Просто повторите полученные результаты и выберите объекты, соответствующие вашим критериям фильтра, используя общие методы, такие как 'for' loop,' .filer' или таковые. – shallowThought

+0

@shallowThought - Большое спасибо - это был намек, который мне нужен. Мои результаты воспроизводятся ниже о вероятности того, что другие могут быть там, где я был, и найдут это полезным, но это ваш ответ, который заставил меня смотреть в правильном направлении. – ConfusionTowers

ответ

0

С благодарностью @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) 

В этом случае, если предикат содержит переходный атрибут, фильтрация работает как ожидалось (т. атрибут переходного процесса оценивается правильно); при извлечении из основных данных фильтр с свойством переходного процесса НЕ выдает ошибку, но также не возвращает никаких результатов.

ресурсы, которые помогли моей прийти к этому ответу:

Надеюсь, что это будет полезно для других с тем же вопросом, который у меня был.

Смежные вопросы