如何解决按字母顺序和部分对 NSFetchedResultsController 进行排序
我正在使用 NSFetchedResultsController 来管理我的 tableView,我正在尝试按字母顺序将实体分类为多个部分,类似于您的联系人应用程序的外观。尝试运行我的代码时出现此错误:the entity Exercise is not key value coding-compliant for the key "nameFirstChar".'
nameFirstChar
是 Exercise
子类中的计算属性,如下所示:
var nameFirstChar: String {
get {
if let char = self.name?.first {
return String(char)
}
return "#"
}
}
这就是我设置 NSFetchedResultsController 的方式:
let fetchRequest:NSFetchRequest<Exercise> = Exercise.fetchRequest()
let sortDescriptor = NSSortDescriptor(key: "name",ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor]
fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest,managedObjectContext: DataController.shared.context,sectionNameKeyPath: "nameFirstChar",cacheName: nil)
不知道是什么导致了这个问题,有人有任何见解吗?
解决方法
您需要确保将计算属性标记为 @objc
,否则它对 Core Data 框架(用目标 C 编写)不可见。
@objc var nameFirstChar: String {
return String(self.lastName?.first ?? "#").uppercased()
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。