Why do I get the error: "Class is not key-value coding compliant for key major" even though major is a property of the class?

Why do I get the error: "Class is not key-value coding compliant for key major" even though major is a property of the class?

我正在尝试使用 NSArrays 和 NSPredicates 来过滤 UITableView 的某些单元格。我有一个名为 FilterTable 的 TableViewController class,它由 FilterCell 组成,它是一个 subclassed UITableViewCell。过滤器单元格中的数据来自 UserProfile,它具有 属性 "major"。当用户单击一个按钮时,我希望 table 仅显示与以计算机科学为专业的用户相对应的单元格。我做了一个 NSPredicate 来过滤我用来填充我的 table 的 UserProfile 数组,但是当我这样做时我得到错误

*** 由于未捕获的异常 'NSUnknownKeyException' 而终止应用程序,原因:“[valueForUndefinedKey:]:此 class 不符合主键的键值编码。”

但是,正如我所说,major 是 UserProfile 的 属性。

对键值合规性问题的其他修复表明接口生成器中的插座连接不正确。但是,UserProfile 不直接显示在 FilterTable 上,因此不通过 IB 连接,我也不希望它连接。相反,FilterTable 有一个 UserProfiles 数组,用于填充 FilterCells。我还尝试将 FilterCell 链接到 FilterTable,然后我可以访问与 major 对应的标签,但这给了我一个错误,你不能为重复内容创建出口。

// 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!
...

您还没有指定具有主要 属性 的元素,试试这个...

userProfilesArray.filter{[=10=].major == "Computer Science"}

假设您的数组是配置文件对象数组