我有一个用于蓝牙数据接收的类,我想将接收数据发送到类 UIViewController 并进行实时绘图(CorePlot)
class BluetoothManager: NSObject {
func dataReceiving(value: [Int]){
for (var m=0 ; m<5 ; m++){
dataOne[m] = value[2*m]
dataTwo[m] = value[2*m+1]
}
MainController().plot(dataOne: [Int], dataTwo: [Int])
}
主 Controller 类:
class MainController: UIViewController,CPTScatterPlotDataSource {
@IBOutlet weak var graphView: CPTGraphHostingView!
private var scatterGraph : CPTXYGraph? = nil
typealias plotDataType = [CPTScatterPlotField : Double]
private var dataForPlot = [plotDataType]()
func plot(dataOne: [Int], dataTwo: [Int]){
let newGraph = CPTXYGraph(frame: CGRectZero)
graphView.hostedGraph = newGraph
...
}
}
程序执行到graphView.hostedGraph = newGraph
时,会出现 fatal error :
unexpectedly found nil while unwrapping an Optional value
我试过在 MainController 类中调用 plot 函数,成功了!
谁能帮我解决这个问题? 谢谢!
最佳答案
您正在行中创建 MainController
的新实例
MainController().plot(dataOne: [Int], dataTwo: [Int])
因此 @IBOutlet weak var graphView: CPTGraphHostingView!
是 nil
- 因此你的代码崩溃了。
您不得按照您当前的方式创建MainController
的新实例 - 通过 Storyboard实例化它,或传入正确的 nib 文件。对于这两种情况,您都必须将 MainController 设置为 IB 中的 Controller 类并连接 socket 。
关于ios - 在 Swift 中调用不同类中的函数( fatal error )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33799854/