I am using Realm with Swift. I want to sort "pictures" saved in Realm by PhotoCollectionViewController in the reverse order of date. I don't know what should I do. I would be pleased if you could lend me your wisdom.
Models.swift
import RealmSwift
class Entry: Object {
@objc dynamic var text = ""
@objc dynamic var date = Date()
let pictures = List<Picture>()
}
class Picture: Object {
@objc dynamic var fullImageName = ""
@objc dynamic var thumbnailName = ""
@objc dynamic var entry : Entry?
}
PhotoCollectionViewController.swift
import UIKit
import RealmSwift
class PhotoCollectionViewController: UICollectionViewController, UICollectionViewDelegateFlowLayout {
var pictures : Results<Picture>?
override func viewWillAppear(_ animated: Bool) {
getPictures()
}
func getPictures() {
if let realm = try? Realm() {
pictures = realm.objects(Picture.self)
//I want to sort pictures in the reverse order of date
collectionView?.reloadData()
}
}
…
}
You should be able to sort it with the following code
realm.objects(Picture.self).sorted(byKeyPath: "date", ascending: false)
Sorry I solved it myself. I changed "pictures" as follows, I was able to do what I expected.
pictures = realm.objects(Picture.self).sorted(byKeyPath: "entry.date", ascending: false)
Thank you for the answers and advice.
If I understood correctly, you want to sort the Entry objects and then flatMap to a bunch of Pictures:
var pictures = realm.objects(Entry.self)
.sorted(byKeyPath: "date", ascending: false)
.flatMap { $0.pictures }