首页 > 解决方案 > realmswift : 使用领域对象操作数组

问题描述

我在我的应用程序开发中遇到了一个问题。

我有 2 个对象,汽车和康索。

康索:

import Foundation
import RealmSwift

final class Car : Object {

    //@objc dynamic var ID = 0
    @objc dynamic var idCar = ""
    @objc dynamic var creadtedAt = NSDate()
    @objc dynamic var modifiedAt = NSDate()
    @objc dynamic var marque = ""
    @objc dynamic var modele = ""
    @objc dynamic var immatriculation = ""
    @objc dynamic var couleur = ""
    @objc dynamic var pseudo = ""
    @objc dynamic var kilometrage = ""
    @objc dynamic var commentaire = "j"
    @objc dynamic var reservoir = ""
    @objc dynamic var dateImmat = ""
    @objc dynamic var motorisation = ""
    @objc dynamic var dateAchat = Date()
    @objc dynamic var numeroSerie = ""
    @objc dynamic var pressionPneu = ""
    @objc dynamic var data: NSData?

}

和汽车:

import Foundation
import RealmSwift

final class Conso : Object {

    //var id: Int
    @objc dynamic var idConso: String?
    @objc dynamic var dateConso = Date()
    @objc dynamic var createdAt = NSDate()
    @objc dynamic var carName: String?
    @objc dynamic var carKilometrage: String?
    @objc dynamic var carKmParcourus: String?
    @objc dynamic var nomStation: String?
    @objc dynamic var adresseStation: String?
    @objc dynamic var CPStation: String?
    @objc dynamic var villeStation: String?
    @objc dynamic var typeCarburant: String?
    @objc dynamic var conso: String?
    @objc dynamic var volConso: String?
    @objc dynamic var prix: String?
    @objc dynamic var coutLitre: String?
    @objc dynamic var commentaire: String?
    @objc dynamic var data: NSData?

}

Conso 是一个依赖于 car 的对象,所以 carName 是 Conso 对象的一部分。

现在我想为每辆车显示最大“Kilométrage”

所以在我的 tableView 中,我输入了以下代码:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "tdbCarCell", for: indexPath) as! tdbCarsTableViewCell
    print("tableView -> cellForRowAt")
    // Configure the cell...
    let modele = self.carObjects[indexPath.row].modele
    let pseudo = self.carObjects[indexPath.row].pseudo
    let km = self.carObjects[indexPath.row].kilometrage

    let consoData = realm.objects(Conso.self).filter("carName = '" + pseudo + "'")
    cell.labelCarPseudo?.text = pseudo
    cell.labelCarModele?.text = modele
    cell.labelkmParcourusDepuisAchat?.text = km

    return cell
}

我得到了 carName,它是“Pseudo”字段,然后我在 RealmObject 上进行查询以获取每辆车的 kmétrage 数组。

我想检索“公里”的最大值。该字段定义为字符串,但它是一个整数。

你能帮我用这个数据得到“公里”的最大值吗?

let consoData = realm.objects(Conso.self).filter("carName = '" + pseudo + "'")

我不知道如何检索数组上的数据。

谢谢您的帮助。

标签: arraysswiftrealm

解决方案


好吧,如果您要使用属性(主要是查询)进行数学运算,那么将其存储为String.

首先,将您的属性更改为整数: @objc dynamic var kilometrage = 0

然后,我认为您无法通过查询检索具有任意属性最大值的对象。

考虑到这一点,您需要获取 所有对象,然后使用max(by:).

if let highestKmCar = realm.objects(Car.self).max(by: { $0.kilometrage > $1.kilometrage}) {
    print(highestConsoByKm.kilometrage)
    //Do what you have to do...
}

推荐阅读