nStableColumnのソートキーとセレクターを使用してnsformatterサブクラスを取得するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/2686455

質問

私のセットアップ:

  • 私はnsdictionaryオブジェクトのnsmutablearrayを入力するsqliteデータベースを持っています。これは私のnstableviewのデータソースです。
  • 列の1つには「時間」があり、時間は数秒を保持するフロートです。
  • この列の値を数分として表示したいと思います:秒。たとえば、私のデータは123.4329387になります。2:03を表示したいと思います。これは、コラムのnstextfieldに適用されるnsformatter(またはnsnumberformatter)のサブクラスで問題ありません。
  • IBのテーブル列属性を使用してソートセットを設定します。「時間」にソートキーを設定し、セレクターを「比較」に設定するだけです。

現在、これは私がソートするときにこのようなものを与えます(下降)

1:37, 1:31, 0:10, 0:10, 0:09, 1:30, 1:30, 1:26, 0:09

同様のナンセンス、それは何かが起こっているように見えますが、それは間違いなくソートされていません。

フォーマットされた値の代わりに、基礎となるデータをソートに確認するにはどうすればよいですか?あるいは、カスタムソートメソッドをどのように指定し、そのコードをそのメソッドにどこに配置しますか?私はかなり回っていましたが、この問題に役立つものは何も見つかりませんでした。これに関する助けは最も高く評価されています。

役に立ちましたか?

解決

並べ替えているとき、それはcompare:nsstringクラスから使用されていましたが、基礎となる数値データを使用していました。ここですべてがボンネットの下で何が起こっているのか正確にはわかりませんが、「TimeCompare」と呼ばれるNSStringのカテゴリに独自の比較方法を作成することで、これを修正することができました。次に、インターフェイスビルダーで、テーブル列のセレクターフィールドに「TimeCompare:」を配置します。これにより、カスタム比較方法を呼び出すことができます。そこから、与えられた文字列をnsnumbersに変換し、それらに電話をかけます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top