【发布时间】:2018-10-11 00:08:13
【问题描述】:
我来自 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:无
实测 ID: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 比 Measurement 更复杂。无论如何,为什么 ClassA 实例 var 没有设置为我告诉它等于的值?
【问题讨论】:
-
我看不到您在哪里实例化 mTestResult。这是一个可选值(即初始化为 nil)。
-
注明。我也会改变它。谢谢你的提示!