[英]Swift super.init() - Property not initialized at super.init call
我在super.init()
行上收到錯誤“Property 'self.directionsCompletionHandler' not initialized at super.init call”。 在最新的 Xcode 更新 (11.4) 之前,這一直運行良好。 刪除init()
或super.init()
也會導致錯誤。 我不太確定它要我做什么。
import UIKit
import CoreLocation
import MapKit
typealias DirectionsCompletionHandler = ((_ route:MKPolyline?, _ directionInformation:NSDictionary?, _ boundingRegion:MKMapRect?, _ error:String?)->())?
class MapManager: NSObject{
fileprivate var directionsCompletionHandler:DirectionsCompletionHandler
fileprivate let errorNoRoutesAvailable = "No routes available"// add more error handling
override init(){
super.init()
}
...
代替
fileprivate var directionsCompletionHandler:DirectionsCompletionHandler
和
fileprivate var directionsCompletionHandler: DirectionsCompletionHandler = nil
我建議不要讓typealias
本身成為可選的,而只是一個簡單的閉包:
typealias DirectionsCompletionHandler = (_ route: MKPolyline?, _ directionInformation: NSDictionary?, _ boundingRegion: MKMapRect?, _ error: String?) -> Void
這是為閉包定義類型別名時的標准約定。
然后定義您的directionCompletionHandler
以明確可選行為:
fileprivate var directionsCompletionHandler: DirectionsCompletionHandler?
並且編譯器可以毫不費力地確定它不需要初始化。
或者,當然,如果您願意,您可以使此初始化顯式:
fileprivate var directionsCompletionHandler: DirectionsCompletionHandler? = nil
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.