RealmSwift:所有领域行显示两次

时间:2019-02-26 09:39:17

标签: ios swift realm entity-relationship

我正在学习在Swift上进行开发,很抱歉,如果我的问题看起来很愚蠢:D 在我的应用上,我需要3个对象:汽车,车站和Conso 汽车对象可以具有多个Conso 车站对象车有很多Conso Conso对象只能链接到一辆汽车和一个车站

以下是Realm对象的代码

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中,我得到了这个片段的结果 假设从另一个VC收到了汽车ID(idCar):

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")
}

结果是我两次有很多行

谢谢您的帮助。

0 个答案:

没有答案