NSPredicate не может распознать объект или его свойства в фильтрованном NSArray? - PullRequest
0 голосов
/ 11 мая 2019

Я пытаюсь использовать NSArrays и NSPredicates для фильтрации определенных ячеек UITableView.У меня есть класс TableViewController с именем FilterTable, который состоит из FilterCell, который является подклассом UITableViewCell.Данные в ячейке фильтра поступают из UserProfile, у которого есть свойство "major" (среди прочих).Когда пользователь нажимает кнопку, я хочу, чтобы в таблице отображались только те ячейки, которые соответствуют профилю пользователя с «Информатикой» в качестве основного.Я сделал NSPredicate для фильтрации массива UserProfile, который я использую для заполнения своей таблицы, но когда я делаю это, я получаю ошибку

*** Завершение приложения из-за необработанного исключения «NSUnknownKeyException», причина: '[valueForUndefinedKey:]: этот класс не совместим с кодировкой значения ключа для ключевого мажора. '

Однако, как я уже говорил, мажор является свойством UserProfile.

// FROM FilterTable:
...
let predicate = NSPredicate(format: "major = 'Computer Science'")
filteredProfiles = (userProfilesArray as NSArray).filtered(using:   predicate) as NSArray
...


// FROM UserProfile
class UserProfileViewController: UIViewController {
var major: String!
...

Одно из возможных решений (из предыдущего вопроса переполнения стека) вместо этого делает:

 filteredProfiles = profileStore.profiles.filter{$0.major == "Computer Science"} as NSArray

Однако я хочу использовать NSPredicates, потому что я в конечном итоге хочу составить предикаты в составные предикаты, если пользователь хочет фильтровать по нескольким основным или другими потому, что я в конечном итоге хочу использовать NSFetchRequest.

Как я могу реализовать ту же идею, что и $ 0.major, которая определяет доступ к UserProfile с использованием NSPredicates.Спасибо:)

...