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