Swift 4 尝试使用 Realm 数据库对象作为实例变量

标签 swift set realm

我有 Java 编程背景。我正在尝试像这样从 classB 设置 classA 的实例变量,以便与进入 Realm 并用于使用 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()
    }
}

我在调试器中得到的输出是

测试编号:无
实测ID:13fvasl-f4vr-4fsb-4kgv-4kvlvnfsv
测试油类型:无
被测油品类型:

我的 TestRes 类型的实例变量进入 Realm 数据库,看起来像这样。

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 比 Measurement 更复杂。无论如何,为什么 ClassA 实例变量没有设置为我告诉它等于的值?

最佳答案

当然,我在发布后就想出了如何解决这个问题..

反正我没有使用 init() 来构造对象! 为了解决我的问题,我把它放在 A 类中

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

然后在 ClassB 中,我使用该构造函数创建了对象,如下所示。

let results = HW2_1_Calculate(measurement:measurement)

关于Swift 4 尝试使用 Realm 数据库对象作为实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50108252/

相关文章:

swift - 最大查找器不工作

objective-c - 如何在 Mac OS X 下防止/更改系统范围内的键盘/鼠标事件?

c++ - 如何在C++中打印集合中的最后一个元素

ios - 在浏览器中打开 Realm 文件总是需要加密 key

android - 在 Realm 中插入数据的更好方法是什么?

ios - Realm 不支持 armv7s

ios - Storyboard输出与模拟不匹配

iOS 谷歌登录 : Hide sign in confirmation message box

c - 需要实现集合操作的C库

java - 如果 Set 包含具有某些字符串值的对象,如何检查 java?