按字母顺序和部分对 NSFetchedResultsController 进行排序
Sorting NSFetchedResultsController alphabetically and in sections
我正在使用 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 框架(写在 Objective C 中)不可见。
@objc var nameFirstChar: String {
return String(self.lastName?.first ?? "#").uppercased()
}
我正在使用 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 框架(写在 Objective C 中)不可见。
@objc var nameFirstChar: String {
return String(self.lastName?.first ?? "#").uppercased()
}