Comment obtenir la sous-classe NSFormatter à travailler avec NSTableColumn clé de tri et de sélection?
-
30-09-2019 - |
Question
Ma configuration:
- J'ai une base de données SQLite dont je remplir un NSMutableArray de NSDictionary objets c'est le DataSource pour mon NSTableView.
- L'une des colonnes détient le « temps », le temps est un flotteur qui maintient secondes.
- Je voudrais afficher les valeurs dans cette colonne en minutes: secondes. Par exemple mes données seraient 123,4329387 je veux afficher 2h03 que je n'ai aucun problème avec faire une sous-classe de NSFormatter (ou NSNumberFormatter) appliquée à mon NSTextField dans la colonne.
- J'ai mis en place le tri à l'aide du tableau Attributs de colonne dans IB, je viens de l'ensemble clé de tri pour le « temps » et l'ensemble de sélecteur « comparer ». Qui fonctionne très bien sans formatter
À l'heure actuelle cela me donne quelque chose comme ça quand je sort (décroissant)
01:37, 01:31, 00:10, 00:10, 00:09, 01:30, 01:30, 01:26, 00:09
et un non-sens similaire, il ressemble à quelque chose qui se passe, mais il est certainement pas triée.
Comment puis-je obtenir le genre de regarder les données sous-jacentes au lieu de la valeur formatée? Sinon, comment puis-je spécifier une méthode de tri personnalisé et où dois-je mettre le code pour ladite méthode? J'ai cherché autour d'un peu et ai rien trouvé pour me aider avec ce problème, toute aide à c'est le plus apprécié.
La solution
Il se trouve que quand il triait qu'il utilisait comparer: de la classe NSString mais il utilisait les données numériques sous-jacentes. Je ne suis pas sûr de ce que tout va ici sous le capot, mais j'ai réussi à résoudre ce problème en créant ma propre méthode de comparaison dans une catégorie de NSString appelée « timeCompare ». Ensuite, dans l'interface builder je viens de mettre « timeCompare: » dans le champ de sélection pour la colonne de la table. Ce qu'il obtient d'appeler ma méthode comparer personnalisée à partir de laquelle je viens converti les chaînes données à NSNumbers et comparer appel:. Sur les