0

と呼ばれる日付型属性を持つ SQLite-backed CoreData エンティティがあり、サブクラスで(unix タイムスタンプ)としてtimestamp表されます。NSManagedObjectNSTimeInterval

これらのエンティティをタイムスタンプで並べ替えようとしていますが、分単位 (秒単位ではありません) の粒度のみです。

これを SQLite で直接簡単に実行できます

ZLOCALTIMESTAMP - CAST(ZLOCALTIMESTAMP AS INT) % 60

NSSortDescriptorタイムスタンプから秒を削除しますが、 と を組み合わせて使用​​してこれを行う方法を見つける必要がありNSFetchedResultsControllerます。

これが私のデータと直接のSQLiteテストの例です...

データとテスト

この計算を実行するモデルに一時的な属性を追加して、その属性に適用できると確信しNSSortDescriptorていますが、まだ試していないので、このようなことを行うための推奨される方法があるかどうかを知りたいと思っていました.

コメントに基づいて編集

わかりましたので、ソート記述子で一時属性を使用することはできません。設定の詳細はこちら...

現在の仕組みでは、エンティティは一連の会話の最新のメッセージを表し、これらの会話は最新のメッセージのタイムスタンプによって並べ替えられます。新しいメッセージが着信すると、それらがその会話の最新のメッセージになるため、タイムスタンプが変更されます。スクリーン グラブに示されているタイムスタンプの 1 秒未満の精度。

問題は、新しいメッセージが着信するたびにテーブル ビューで再ソートされることです。これは非常に頻繁に発生する可能性があり、セルをタップするのが難しくなります。

秒を無視して分単位でのみ並べ替えるように並べ替え動作を変更したい (画面グラブの minuteonly 列を参照) ため、新しいメッセージが入っても、分が変わるまで並べ替えに影響しません。

これが物事を明確にすることを願っています。

前もって感謝します :)

4

0 に答える 0