I've written the code below and always get the error
(1) Variable self.pointOnMap used before being initialised.
and
(2) Variable self.pointOnMap captured by a closure before being initialised.
I don't see why because I have declared self.pointOnMap = MKPointAnnotation() which should initialise it early enough.
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)
}