在我的viewController中有tableView,我有使用fetchedResultsController从Core Data Database中获取的对象列表。我按部分对所有提取的结果进行了分组。它工作正常,我已经实现了以下方法来启用出现在TableView右侧的A-Z sectionIndexes:
func sectionIndexTitles(for tableView: UITableView) -> [String]? {
let indexTitles = self.fetchedResultsController.sectionIndexTitles
return indexTitles
}
func tableView(_ tableView: UITableView, sectionForSectionIndexTitle title: String, at index: Int) -> Int {
return self.fetchedResultsController.section(forSectionIndexTitle: title, at: index)
}
我也有fetchedResultsController
var fetchedResultsController: NSFetchedResultsController<Object>!
self.fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: context!, sectionNameKeyPath: "project.group.name", cacheName: nil)
sectionIndexTitles工作正常,而我的核心数据数据库中有英文的group.name值,但是当我有另一种语言的group.name值(或英语混合而非英语)时sectionIndexTitles
显示(返回) )我的英文字母,但对于非英文字母,它返回我的问号或英文字母。
["A", "B", "F", "G", "R", "S", "A", "E"]
这样的数组,而不是像["A", "B", "F", "G", "R", "S", "Letter in another language", "Letter in another language"]
那样返回数组。
我改变了语言方案,它返回["A", "B", "F", "G", "R", "S", "?", "?"]
。
它用英文字母替换非英文字母或显示“?”,而不是用另一种语言显示值。
不确定是不是错误?或者也许它不能用不同的语言显示字母。问题在哪里以及如何解决?
我正在使用Swift 3,Xcode 8.3.3。
答案 0 :(得分:0)
我遇到了同样的问题,因为俄语回来了!而不是字符。所以我执行了这个解决方案:
override func sectionIndexTitles(for tableView: UITableView) -> [String]? {
if let sections = fetchedResultsController?.sections {
var sectionTitles: [String] = []
for section in sections {
sectionTitles.append(String(describing: section.name.first!))
}
return sectionTitles
}
return fetchedResultsController?.sectionIndexTitles
}
我认为这可以用于大多数情况