String compare, Sonderzeichen zuletzt

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • String compare, Sonderzeichen zuletzt

    Hallo Entwickler,

    Ich habe ein UITableView mit Index Titles rechts, ähnlich wie in Kontakten oder Musik.Die Daten werden durch einen NSFetchedResultsController geladen und ich sortiere sie mit caseInsensitiveCompare. Das Problem ist, dass die Sonderzeichen am Anfang kommen. Gibt es eine Möglichkeit, die Sonderzeichen hinter den Buchstaben anzuzeigen, so wie in den Apple Apps?
  • Hallo,

    die Frage ist schon was Du als Sonderzeichen siehst.
    # Ä Â etc. Aber das Ä möchtest Du sicherlich bei A. In anderen Ländern aber wohl eher nicht.

    Schreibe doch eine kleine eigene compare Methode.
    Dann könntest Du selbst bestimmen was für Dich Buchstaben und Sonderzeichen sind.
    Hilfreich ist da CharacterSet, ASCII und UTF-8, dort gibt es auch "Geuppierungen" von Zeichen.

    Viele Grüße
  • also ich würde zuerst mal einen compare-char errechnen (und cachen) und dann in der eigenen compare-methode dieses zeichen zum sortieren verwenden. wenn sie gleich sind, dann noch die numerical comparision hinterher.
    den compare-char würd ich mir ca so errechnen:

    Quellcode

    1. unichar compareChar = 0;
    2. NSString *s = @"Ä";
    3. NSString *decomposedLowercase = [[s decomposedStringWithCanonicalMapping] lowercaseString];
    4. if ([decomposedLowercase length])
    5. {
    6. compareChar = [decomposedLowercase characterAtIndex:0];
    7. if (compareChar > '0' && compareChar <= '9')
    8. {
    9. compareChar = '0';
    10. }
    11. }
    Alles anzeigen