2017-08-07 3 views
2

In meinem ViewController mit TableView darin habe ich die Liste der Objekte von Core Data Database mit abgerufenenResultsController abgerufen. Ich habe alle abgerufenen Ergebnisse nach Abschnitt gruppiert. Es funktioniert gut, habe ich die folgenden Methoden implementiert AZ sectionIndexes zu ermöglichen, die auf der rechten Seite des Tableview angezeigt:sectionIndexTitles (für TableView: UITableView) -Methode gibt seltsame Ergebnisse zurück

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) 
    } 

Ich habe auch diese Erklärung von fetchedResultsController

var fetchedResultsController: NSFetchedResultsController<Object>! 

self.fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: context!, sectionNameKeyPath: "project.group.name", cacheName: nil) 

sectionIndexTitles funktioniert gut, während Ich habe Werte für group.name in Englisch in meiner Core Data-Datenbank, aber wenn ich group.name Werte in einer anderen Sprache habe (oder Englisch gemischt mit nicht Englisch) sectionIndexTitles zeigt mir englische Buchstaben zurück, aber für nicht englische Buchstaben es gibt mir Fragezeichen oder englische Buchstaben zurück.

zum Beispiel gibt es das Array wie folgt ["A", "B", "F", "G", "R", "S", "A", "E"] zurück, anstatt das Array wie dieses ["A", "B", "F", "G", "R", "S", "Letter in another language", "Letter in another language"] zurückgeben. Ich habe das Sprachschema geändert und es gibt ["A", "B", "F", "G", "R", "S", "?", "?"] zurück. Es ersetzt nicht englische Buchstaben durch englische Buchstaben oder "?", Anstatt den Wert in einer anderen Sprache anzuzeigen.

enter image description here

Nicht sicher, ob es ein Fehler ist? Oder vielleicht kann es keine Buchstaben in verschiedenen Sprachen zeigen. Wo kann das Problem sein und wie kann man es lösen?

Ich verwende Swift 3, Xcode 8.3.3.

Antwort

0

Ich habe das gleiche Problem konfrontiert, für die russische Sprache gab es mir zurück! anstelle von Zeichen. So führte ich diese Lösung:

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 
} 

ich denke, das für die meisten Fälle verwendet werden können

Verwandte Themen