arrays - 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 + "'")
我不知道如何检索数组上的数据。
谢谢您的帮助。
解决方案
好吧,如果您要使用属性(主要是查询)进行数学运算,那么将其存储为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...
}
推荐阅读
- oracle - 表存在于存储过程中,而在 select 中使用,但在 Insert 语句中使用时不存在
- c# - WPF DataGridComboBoxColumn DisplayMember 在以编程方式绑定时组合框失去焦点后重置为类名
- java - 根据用户在 Java 8 中选择的属性对列表进行动态排序
- r - 从一个数据表列中提取不同的数据并插入到R中其他增加的列中
- json - 字符串数组中的唯一列表
- android - 从我的应用程序中使用 NO 线了解堆栈跟踪
- javascript - 检索新更新的文章而不刷新页面
- python - Django Rest Framework 覆盖 viewset list() 方法而不丢失 filter_backends 功能
- npm - 如何修复“npm install”上的包超时?
- c++ - Borland C++ 编译器中的 iostream