Я пытаюсь добавить свое собственное свойство в MKAnnotation, но так, как я это делаю, я получаю сообщение об ошибке. То, что я хочу сделать, это добавить, кроме title
и subtitle
например height
и rate
.Добавление свойства в MKAnnotation дает ошибку EXC_BAD_EXCESS
class MapPin: NSObject, MKAnnotation {
var coordinate: CLLocationCoordinate2D
var title: String
var subtitle: String
var imageName: String
init(coordinate: CLLocationCoordinate2D, title: String, subtitle: String, imageName: String) {
self.coordinate = coordinate
self.title = title
self.subtitle = subtitle
self.imageName = imageName
}
}
Это, как я определяю свои маркеры:
var request = NSURLRequest(URL: url!)
var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: nil)
if data != nil {
var dataArray = JSON(data: data!)
for (key, data) in dataArray {
var title = data["name"]
var subtitle = data["description"]
var lat = data["lat"]
var lng = data["lng"]
var marker = CustomPointAnnotation()
marker.coordinate = CLLocationCoordinate2D(latitude: lat.doubleValue, longitude: lng.doubleValue)
marker.title = title.string
marker.subtitle = subtitle.string
marker.imageName = "marker.png"
marker.image = "Test";
mapView.addAnnotation(marker)
}
}
И это, где я пытаюсь извлечь данные:
func mapView(mapView: MKMapView!, annotationView view: MKAnnotationView!, calloutAccessoryControlTapped control: UIControl!) {
println("Called")
performSegueWithIdentifier("mapToCity", sender: self)
var pinData = view.annotation as! MapPin //EXC_BAD_ACCESS Error
var title = pinData.title
var subtitle = pinData.subtitle
var lat = pinData.coordinate.latitude
var lng = pinData.coordinate.longitude
var image = pinData.imageName
NSUserDefaults.standardUserDefaults().setObject(title, forKey: "title")
NSUserDefaults.standardUserDefaults().setObject(subtitle, forKey: "subtitle")
NSUserDefaults.standardUserDefaults().setObject(lat, forKey: "lat")
NSUserDefaults.standardUserDefaults().setObject(lng, forKey: "lng")
}
Я получаю ошибку Thread 1: EXC_BAD_ACCESS (code =1, address=0x4)
на линии var pinData
когда я пытаюсь выполнить его. Что может быть причиной этого и как его решить?
'annotation' не существует в моем коде. И когда я пытаюсь 'view', он говорит, что MKAnnotationView не имеет отношения к типу MKUserLocation. (в строке 3) –
@SinanSamet просмотреть отредактированный ответ и проверить, что значение напечатано или нет? –
Мне пришлось удалить инструкцию else, потому что она дала ошибку, но без нее ее удалось запустить. Когда я нажал на MapPin, он разбился и дал мне ошибку «Thread 1: EXC_BAD_INSTRUCTION (code = EXC_I386_INVOP, subcode = 0x0)' в строке 'println (« Subtitle ... ' –