Swift 4 пытается использовать объект базы данных Realm в качестве переменной экземпляра - PullRequest
0 голосов
/ 01 мая 2018

Я пришел из опыта программирования Java. Я пытаюсь установить переменные моего экземпляра classA из classB, чтобы сделать вычисления с другими переменными, которые входят в Realm и используются для связи с Bluetooth с помощью RXSwift, поэтому я пытаюсь преобразовать объектный тип Measurement в TestRes.

public class classA {

    var mTestResult:TestRes?

    func setTestResult(measurement:Measurement){
        self.mTestResult?.id = measurement.measurementId
        print("Test Id:     \(self.mTestResult?.id)")
        print("Measured Id: \(measurement.measurementId)")

        self.mTestResult?.oilType = measurement.oilType
        print("Test Oil Type:     \(self.mTestResult?.oilType)")
        print("Measured Oil Type: \(measurement.oilType)")
    }

}

Функция ClassB справа внизу:

public class ClassB{

    private func send304and306(measurement: Measurement, connectedPeripheral: Peripheral) -> Observable<Measurement> {

        let response2 = MeasurementData(response: response)     
        //added            
        dump(measurement)
        let results = HW2_1_Calculate()
        results.setTestResult(measurement: measurement)

        results.run()//CRASH HERE because my measurements are not being set

        realm.add(results.mTestResult, update: true)
        print("about to dump results")
        dump(results)
        try realm.commitWrite()
    }
}

Вывод, который я получаю в отладчике от этого,

Идентификатор теста: ноль
Измеренный идентификатор: 13fvasl-f4vr-4fsb-4kgv-4kvlvnfsv
Тип масла для испытаний: ноль
Тип измеряемого масла:

Моя переменная экземпляра типа TestRes входит в базу данных области и выглядит так.

class TestRes: Object {
    @objc dynamic var id:String = ""
    @objc dynamic var oilType:String = ""
}

class Measurement: Object {
    @objc dynamic var measurementId = UUID().uuidString
    @objc dynamic var oilType: String = ""    
}

На самом деле TestRes более сложен, чем измерение. В любом случае, почему экземпляру ClassA var не присваивается значение, о котором я говорю?

1 Ответ

0 голосов
/ 01 мая 2018

Я понял, как это исправить, конечно, сразу после публикации ..

В любом случае, я не использовал init () для создания объекта! чтобы исправить мою проблему, я поместил это в ClassA

init(measurement:Measurement){
    self.mTestResult = setTestResult(measurement: measurement)
    print("Test Id:     \(self.mTestResult?.id)")
}

, а затем в ClassB я создал объект с этим конструктором, как показано ниже.

let results = HW2_1_Calculate(measurement:measurement)
...