Я знаю, что это старая ветка, но я хотел бы добавить свое решение с помощью Swift.
Я должен сообщить, что это решение зависит от формата имени раздела, возвращаемого NSFetchedResultsController
, поэтомуэто зависит от внутренних реализаций, которые могут быть изменены Apple.
Имя раздела содержит URI идентификатора объекта в постоянном хранилище данных, поэтому вы можете получить объект, сначала извлекая URI, а затем запрашивая Storeдля объекта с соответствующим URI
override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
let sectionInfo = fetchedResultsController?.sections![section]
let sectionName = sectionInfo?.name
//This part depends on the internal implementation of sectionInfo.name
let initialRange = sectionName?.rangeOfString("<")
let finalRange = sectionName?.rangeOfString(">")
let uri = sectionName?.substringWithRange((initialRange?.endIndex)!..<(finalRange?.startIndex)!)
let url = NSURL(string: uri!)
let store = fetchedResultsController?.managedObjectContext.persistentStoreCoordinator
let objectID = store?.managedObjectIDForURIRepresentation(url!)
let coreObject = fetchedResultsController?.managedObjectContext.objectWithID(objectID!)
//return the correct property from the object as the title
let title = ...
return title
}
Ну, вам нужно проверить на ошибки (я бы использовал guard
перед этими let
), но вы поняли.