Swift 我不知道';我不了解财产';自选标题';代码中的super.init调用错误未初始化

Swift 我不知道';我不了解财产';自选标题';代码中的super.init调用错误未初始化,swift,cllocationmanager,swiftui,Swift,Cllocationmanager,Swiftui,我创建了一个类,用CLLocationManagerDelegate为我的SwiftUI应用程序获取当前标题,但是我在super.init call中没有初始化属性“self.heading”错误。我不知道为什么。我认为我不需要指定参数,因为我的类在调用期间不接受任何参数 我的LocationManager类: class LocationManager: NSObject, CLLocationManagerDelegate, ObservableObject { var locatio

我创建了一个类,用CLLocationManagerDelegate为我的SwiftUI应用程序获取当前标题,但是我在super.init call中没有初始化属性“self.heading”错误。我不知道为什么。我认为我不需要指定参数,因为我的类在调用期间不接受任何参数

我的LocationManager类:

class LocationManager: NSObject, CLLocationManagerDelegate, ObservableObject {

  var locationManager: CLLocationManager?
  var objectWillChange = PassthroughSubject<Void, Never>()

  @Published var heading: Double {
    willSet {
      objectWillChange.send()
    }
  }

  override init() {
    super.init()

    locationManager = CLLocationManager()
    locationManager!.delegate = self
    locationManager!.desiredAccuracy = kCLLocationAccuracyBest
    locationManager!.requestWhenInUseAuthorization()
  }

  func locationManager(_ manager: CLLocationManager, didUpdateHeading newHeading: CLHeading) {
    self.heading = newHeading.trueHeading.degreesToRadians
  }

}
类位置管理器:NSObject、CLLocationManagerDelegate、ObservableObject{
var locationManager:CLLocationManager?
var objectWillChange=PassthroughSubject()
@已发布变量标题:双{
意志{
objectWillChange.send()
}
}
重写init(){
super.init()
locationManager=CLLocationManager()
locationManager!.delegate=self
locationManager!.desiredAccuracy=kCLLocationAccuracyBest
locationManager!.RequestWhenUseAuthorization()
}
func locationManager(manager:CLLocationManager,didUpdateHeading新标题:CLHeading){
self.heading=newHeading.trueHeading.degreesToRadians
}
}

在初始化超级类之前,必须初始化当前类的所有实例变量

因此,在调用
super.init()
之前,向
标题添加一些初始值,如下所示:

override init() {
    heading = 0 // Or anything you need
    super.init()

    locationManager = CLLocationManager()
    locationManager!.delegate = self
    locationManager!.desiredAccuracy = kCLLocationAccuracyBest
    locationManager!.requestWhenInUseAuthorization()
}

在初始化超级类之前,必须初始化当前类的所有实例变量

因此,在调用
super.init()
之前,向
标题添加一些初始值,如下所示:

override init() {
    heading = 0 // Or anything you need
    super.init()

    locationManager = CLLocationManager()
    locationManager!.delegate = self
    locationManager!.desiredAccuracy = kCLLocationAccuracyBest
    locationManager!.requestWhenInUseAuthorization()
}