[解決済み] Swiftでコアデータを日付(時間だけでなく)でソートする
2022-03-04 20:51:07
質問
Swiftでコアデータを使ったアプリを作っています。私は日付である期限属性を持つタスクエンティティを使用しています。私は、この期日に従ってタスクを並べ替える必要があります。
NSSortDescriptorを使用し、keyをdueにしてみました。
NSSortDescriptor.init(key: "due", ascending: false)
課題です。
日/月/年を考慮せず、時間だけでデータをソートしてしまいます。
これがフェッチリクエストで取得したデータです。
Optional(2017-02-06 03:29:18 +0000)
Optional(2017-02-08 03:29:27 +0000)
Optional(2017-02-07 03:29:38 +0000)
Optional(2017-02-08 03:30:29 +0000)
早く来たものから並べ替えるにはどうしたらいいですか?(時間部分だけでなく、NSDate全体を考慮して)
にしたいのですが。
Optional(2017-02-06 03:29:18 +0000)
Optional(2017-02-07 03:29:38 +0000)
Optional(2017-02-08 03:29:27 +0000)
Optional(2017-02-08 03:30:29 +0000)
完全なコード 完了したタスクはすべてリストで0になり、電話をしています。
helper(showComp: true, sortBy: NSSortDescriptor.init(key: "due", ascending: false))
ヘルパー関数です。
func helper(showComp: Bool, sortBy: NSSortDescriptor?){
let g = cur as! Group
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
return
}
let managedContext = appDelegate.persistentContainer.viewContext
let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Task")
let sortDescriptor0 = NSSortDescriptor.init(key: "completed", ascending: true)
let sortDescriptor = NSSortDescriptor.init(key: "index", ascending: true)
if sortBy == nil {
fetchRequest.sortDescriptors = [sortDescriptor0, sortDescriptor]
}else{
fetchRequest.sortDescriptors = [sortDescriptor0, sortBy!]
}
if (cur as! Group).name != "All"{
var predicate = NSPredicate(format: "group = %@", argumentArray: [g])
if !showComp {
predicate = NSPredicate(format: "group = %@ && completed = %@", argumentArray: [g, 0])
}
fetchRequest.predicate = predicate
}
do {
groups = try managedContext.fetch(fetchRequest)
} catch let error as NSError {
print("Could not fetch. \(error), \(error.userInfo)")
}
解決方法は?
スウィフト3
var sdSortDate = NSSortDescriptor.init(key: "date", ascending: false)
fr.sortDescriptors = [sdSortDate]
let result4 = try! context.fetch(fr)
Swift 3でテストしてみましたが、うまくいきました
[<NSManagedObject: 0x618000089060> (entity: CoreDate; id: 0x61800002c460 <x-coredata://E7D9FD6F-5DCF-464B-93BF-D1609BF35695/CoreDate/p3> ; data: {
date = "2017-02-09 21:35:19 +0000";
}), <NSManagedObject: 0x61800008b680> (entity: CoreDate; id: 0x60000002c140 <x-coredata://E7D9FD6F-5DCF-464B-93BF-D1609BF35695/CoreDate/p1> ; data: {
date = "2017-02-06 04:41:59 +0000";
}), <NSManagedObject: 0x60800008c080> (entity: CoreDate; id: 0x60800002d460 <x-coredata://E7D9FD6F-5DCF-464B-93BF-D1609BF35695/CoreDate/p2> ; data: {
date = "2017-02-17 18:28:39 +0000";
})]
After sort
[<NSManagedObject: 0x61800008b680> (entity: CoreDate; id: 0x60000002c140 <x-coredata://E7D9FD6F-5DCF-464B-93BF-D1609BF35695/CoreDate/p1> ; data: {
date = "2017-02-06 04:41:59 +0000";
}), <NSManagedObject: 0x618000089060> (entity: CoreDate; id: 0x61800002c460 <x-coredata://E7D9FD6F-5DCF-464B-93BF-D1609BF35695/CoreDate/p3> ; data: {
date = "2017-02-09 21:35:19 +0000";
}), <NSManagedObject: 0x60800008c080> (entity: CoreDate; id: 0x60800002d460 <x-coredata://E7D9FD6F-5DCF-464B-93BF-D1609BF35695/CoreDate/p2> ; data: {
date = "2017-02-17 18:28:39 +0000";
})]
関連
-
[解決済み] Swift における指数演算子
-
[解決済み] Swiftベースのアプリケーションは、OS X 10.9/iOS 7以下でも動作しますか?
-
[解決済み] Swift カスタムオブジェクトの配列をプロパティ値でソートする方法
-
[解決済み] Swiftではクロージャの内部では常に[unowned self]を使うべきか?
-
[解決済み] Swiftで乱数を生成する方法とは?
-
[解決済み] プログラミング言語Swiftで文字列のn文字目を取得する
-
[解決済み] Swift で app delegate への参照を取得するにはどうすればよいですか?
-
[解決済み] コア・データ エンティティの全インスタンスを削除する最短の方法
-
[解決済み】Swiftで日付の書式を設定する
-
[解決済み】Swiftの列挙型と関連する値の等質性をテストする方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] これを解決するにはどうしたらいいのでしょうか。UILabel.textは、メインスレッドからのみ使用する必要があります。
-
[解決済み] XCTest の基礎となるモジュールをロードできない
-
[解決済み] Swift における指数演算子
-
[解決済み] iPhone Simulator.appと一緒にXcodeも外付けハードディスクにインストールできますか?
-
[解決済み] Swift 3、Swift 4、それ以降で dispatch_sync, dispatch_async, dispatch_after などはどうすればいいですか?
-
[解決済み] Swiftベースのアプリケーションは、OS X 10.9/iOS 7以下でも動作しますか?
-
[解決済み] Swiftの'open'キーワードは何ですか?
-
[解決済み】String.substringWithRangeはどのように使うのですか?(または、SwiftでRangeはどのように動作しますか?)
-
[解決済み】Swiftのenumのカウントを取得する方法は?
-
[解決済み】swiftで変数のメモリアドレスを印刷する