在 Swift 中的不同 Class 中调用函数(致命错误)?
Call Function in Different Class in Swift(fatal error)?
我有一个 class 用于蓝牙数据接收,我想将接收数据发送到 class 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])
}
主控制器class:
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
时,会出现致命错误:
unexpectedly found nil while unwrapping an Optional value
我试过在 MainController class 中调用 plot 函数,成功了!
谁能帮我解决这个问题?
谢谢!
您已将 plot 声明为实例方法,并且将其作为 class 方法调用。
您需要更改此行:
func plot(dataOne: [Int], dataTwo: [Int]){
到这一行:
class func plot(dataOne: [Int], dataTwo: [Int]){
如果你需要像你那样调用它
您正在
行中创建 MainController
的新实例
MainController().plot(dataOne: [Int], dataTwo: [Int])
因此 @IBOutlet weak var graphView: CPTGraphHostingView!
是 nil
- 因此您的代码崩溃了。
您不得按照您目前的方式创建MainController
的新实例——要么通过故事板实例化它,要么传入正确的 nib 文件。对于这两种情况,您必须在 IB 中将 MainController 设置为控制器 class 并连接插座。
MainController()
创建 MainController
class 的新实例,这与 Interface Builder 中的对象不同。
您需要在 Interface Builder
中引用 MainController
对象
我有一个 class 用于蓝牙数据接收,我想将接收数据发送到 class 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])
}
主控制器class:
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
时,会出现致命错误:
unexpectedly found nil while unwrapping an Optional value
我试过在 MainController class 中调用 plot 函数,成功了!
谁能帮我解决这个问题? 谢谢!
您已将 plot 声明为实例方法,并且将其作为 class 方法调用。
您需要更改此行:
func plot(dataOne: [Int], dataTwo: [Int]){
到这一行:
class func plot(dataOne: [Int], dataTwo: [Int]){
如果你需要像你那样调用它
您正在
行中创建MainController
的新实例
MainController().plot(dataOne: [Int], dataTwo: [Int])
因此 @IBOutlet weak var graphView: CPTGraphHostingView!
是 nil
- 因此您的代码崩溃了。
您不得按照您目前的方式创建MainController
的新实例——要么通过故事板实例化它,要么传入正确的 nib 文件。对于这两种情况,您必须在 IB 中将 MainController 设置为控制器 class 并连接插座。
MainController()
创建 MainController
class 的新实例,这与 Interface Builder 中的对象不同。
您需要在 Interface Builder
中引用MainController
对象