Я написал код, приведенный ниже, и всегда получаю ошибкупеременных используются перед инициализируются
(1) Переменный self.pointOnMap использовал до инициализируются.
и
(2) Переменный self.pointOnMap захвачен закрытия перед тем, как инициализируется.
Я не понимаю, почему, потому что я объявил self.pointOnMap = MKPointAnnotation(), который должен инициализировать его достаточно рано.
class Pin: NSManagedObject {
var mapView: MKMapView?
var pointOnMap: MKPointAnnotation?
@NSManaged var lat: Double
@NSManaged var lon: Double
@NSManaged var photos: Photo?
override init(entity: NSEntityDescription, insertIntoManagedObjectContext context: NSManagedObjectContext?) {
super.init(entity: entity, insertIntoManagedObjectContext: context)
self.pointOnMap = MKPointAnnotation()
}
init(dictionary: [String : AnyObject], context: NSManagedObjectContext) {
let entity = NSEntityDescription.entityForName("Pin", inManagedObjectContext: context)!
super.init(entity: entity, insertIntoManagedObjectContext: context)
lat = 1.0
lon = 2.0
self.pointOnMap = MKPointAnnotation()
println(self.pointOnMap) // RETURNS ERROR (1)
self.pointOnMap!.coordinate = CLLocationCoordinate2D(latitude: lat, longitude: lon) // RETURNS ERROR (2)
}
см. Http://stackoverflow.com/questions/27028813/error-in-swift-class-property-not-initialized-at-super-init-call-how-to-initi – Volker
для какой линии это показывает эта ошибка? –
println (self.pointOnMap) // RETURNS ERROR (1) self.pointOnMap! .coordinate = CLLocationCoordinate2D (широта: lat, longitude: lon) // RETURNS ERROR (2) – user3573256