Frage

Mein Setup:

  • Ich habe eine SQLite-Datenbank, aus dem ich eine NSMutableArray von NSDictionary bevölkern Objekte dies die Datasource für meine NSTableView ist.
  • Eine der Spalten hält „Zeit“, die Zeit ein Schwimmer ist, die Sekunden hält.
  • Ich möchte die Werte in dieser Spalte als Minuten angezeigt werden: Sekunden. Zum Beispiel meiner Daten wären 123.4329387 Ich mag 02.03 anzuzeigen, die ich habe kein Problem mit einer Unterklasse von NSFormatter tun (oder NSNumberFormatter), die auf meine NSTextField in der Spalte.
  • Ich habe die Sortierung mithilfe der Tabellenspalte Attribute in IB eingerichtet, ich habe nur den Sortierschlüssel auf „Zeit“ und die Wähler auf „Vergleichen“. Was in Ordnung, ohne die Formatierer funktioniert

Zur Zeit gibt mir so etwas wie dieses, wenn ich sortieren (absteigend)

1.37, 01.31, 00.10, 00.10, 00.09, 01.30, 01.30, 01.26, 00.09

und ähnlicher Unsinn, es sieht aus wie etwas los ist, aber es ist auf jeden Fall nicht sortiert.

Wie kann ich die Sortierung Blick auf die zugrunde liegenden Daten anstelle des formatierten Wert? Alternativ, wie gebe ich eine benutzerdefinierte Sortiermethode und wo stelle ich den Code für das Verfahren? Ich habe gesucht um recht viel und habe nichts zu helfen Sie mir mit diesem Problem zu finden, jede Hilfe bei dieser wird am meisten geschätzt.

War es hilfreich?

Lösung

Es stellt sich heraus, dass, wenn es sortierte sie vergleichen wurde unter Verwendung: von der NSString-Klasse, aber es wurde mit der zugrunde liegenden numerischen Daten. Ich bin mir nicht ganz sicher, was alle hier unter der Haube vor sich geht, aber ich schaffte es, dies zu beheben, indem Sie meine eigene vergleichen Methode in einer Kategorie von NSString Schaffung genannt „timeCompare“. Dann in Interface Builder Ich habe „timeCompare:“ just in dem Auswahlfeld für den die Tabellenspalte. Dies wird es meine Gewohnheit vergleichen Methode aufrufen, aus dem ich konvertiert nur die Saiten zu NSNumbers und Anruf gegeben vergleichen. Auf sie

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top