RealmSwift: все строки области отображаются дважды - PullRequest
0 голосов
/ 26 февраля 2019

Я учусь разрабатывать на Swift, извините, если мои вопросы кажутся глупыми: D В моем приложении мне нужно 3 объекта: Car, Station и Conso. У объекта Car может быть много Conso A Station У объекта автомобиля много Conso A ConsoОбъект может быть связан только с одним Автомобилем и одной Станцией

Вот коды для объектов Королевства

Conso.swift

import Foundation
import RealmSwift

final class Conso : Object {

   //var id: Int
   @objc dynamic var idConso = ""
   //... Some fields

   @objc dynamic var data: NSData?
   @objc dynamic var idCar = "" 
   @objc dynamic var station: Station?  // Link to a Station Object
   @objc dynamic var car: Car?  // Link to a car Object

Car.swift

import Foundation
import RealmSwift

final class Car : Object {

//@objc dynamic var ID = 0
@objc dynamic var idCar = ""
//...some fields
@objc dynamic var data: NSData?

// Link to Conso object (Many-to-One)
let consos = LinkingObjects(fromType: Conso.self, property: "car")

Station.swift

import Foundation
import RealmSwift
import MapKit

final class Station : Object {

//@objc dynamic var ID = 0
@objc dynamic var idStation = ""
//...some fields
@objc dynamic var data: NSData?
// Link to Conso object (Many-to-One)
let consos = LinkingObjects(fromType: Conso.self, property: "station")

Я вставляю объекты в базу данных, используя этот фрагмент:

// Create a Conso Object
let conso:Conso = Conso()
conso.idConso = "Conso-123454344"

if let textStationService = self.TextFieldStationService.text{
            conso.nomStation = textStationService
            conso.station?.nomStation = textStationService
}

if let textCPStationService = self.TextFieldCodePostal.text{
            conso.CPStation = textCPStationService
            self.station!.codePostal = textCPStationService
        }

if let textVilleStationService = self.TextFieldStationServiceCPVille.text{
            conso.villeStation = textVilleStationService
            self.station!.ville = textVilleStationService
        }

// A car object is received from another viewController
conso.car = self.car 

let realm = try! Realm()
try! realm.write {
  realm.add(conso)
  realm.add(station!)
}

Из другого ViewController я получаю результаты с этим фрагментом, предполагаемым, что автомобильid (idCar) получен от другого VC:

func listConso(){
    let realm = try! Realm()
    // Get the car from its id
    self.car = realm.objects(Car.self).filter("idCar = %@",self.idCar).first
    // Get Conso based on the searched car
    self.consosData = realm.objects(Car.self).filter("idCar = %@",self.idCar).first?.consos.sorted(byKeyPath: "dateConso", ascending: false)
    self.consos = Array((self.consosData)!)


    self.tableViewConso.setEditing(false, animated: true)
    self.tableViewConso.reloadData()
    print("listConsop")
}

В результате у меня много строк дважды

Спасибо за вашу помощь.

...