如何在领域中对结果进行排序

时间:2019-01-12 08:01:10

标签: swift realm

我在Swift中使用Realm。我想按日期的相反顺序对PhotoCollectionViewController中保存在Realm中的“图片”进行排序。我不知道该怎么办。如果您能将我的智慧借给我,我将很高兴。

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()
        }
    }
…
}

3 个答案:

答案 0 :(得分:2)

您应该可以使用以下代码对其进行排序

realm.objects(Picture.self).sorted(byKeyPath: "date", ascending: false)

答案 1 :(得分:1)

如果我的理解正确,您想将Entry个对象排序,然后将flatMap排序为一堆Picture s:

var pictures = realm.objects(Entry.self)
                   .sorted(byKeyPath: "date", ascending: false)
                   .flatMap { $0.pictures }

答案 2 :(得分:1)

对不起,我自己解决了。我如下更改了“图片”, 我能够做到我所期望的。

pictures = realm.objects(Picture.self).sorted(byKeyPath: "entry.date", ascending: false)

谢谢您的回答和建议。