Ich arbeite mit einem Mapview nicht eine Tabellenansicht, aber ich weiß nicht, was zu ersetzen IndexPath.row.Was anstelle von indexPath.row zu verwenden? für Nicht-Tabelle?
Ich habe eine Mapview mit Anmerkungen, wenn die Info-Schaltfläche einer Anmerkung gedrückt wird, dann frage ich meine CK-Datenbank ab und gebe den Datensatz zurück, der ein Namensfeld hat, das dem Namen der Anmerkung entspricht. Dies gibt ein [CKRecord] mit einem einzelnen Datensatz zurück, da keine übereinstimmenden Namen vorhanden sind.
An diesem Punkt mit einem Tableview ich folgendes tun würde, um auf die Daten zugreifen ...
let placeInfo = selectedData[indexPath.row]
let placeName = placeInfo.objectForKey("Name") as! String
let placeCity = placeInfo.objectForKey("City") as! String
Da ich eine Tableview nicht bin mit, ich benutze keine indexPath müssen . Da mein [CKRecord] Objekt nur einen einzelnen Datensatz enthält, dachte ich, ich indexPath.row mit der Array Lage des Datensatz ...
let placeInfo = selectedPlace[0] //also tried 1
Diese Linien erzeugen einen Index aus Bereichsfehler ersetzen könnte.
Ich habe alles versucht, was ich weiß, und wie Sie sich vielleicht vorstellen können, bin ich im Moment nicht gerade großartig im schnellen oder programmieren im Allgemeinen.
Hier ist die vollständige mapView Funktion verwende ich ...
func mapView(mapView: MKMapView, annotationView: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {
let cloudContainer = CKContainer.defaultContainer()
let publicData = cloudContainer.publicCloudDatabase
let tappedPlace = annotationView.annotation!.title!! as String
let predi = NSPredicate(format: "Name = %@", tappedPlace)
let iquery = CKQuery(recordType: "Locations", predicate: predi)
publicData.performQuery(iquery, inZoneWithID: nil, completionHandler: {
(results, error) -> Void in
if error != nil {
print(error)
return
}
if let results = results {
print("Downloaded data for selected location for \(tappedPlace)")
NSOperationQueue.mainQueue().addOperationWithBlock() {
self.selectedPlace = results
}
}
})
let placeInfo = selectedPlace[0]
let placeName = placeInfo.objectForKey("Name") as! String
//returns Index out of range error for placeInfo line
//need data before segue
//performSegueWithIdentifier("fromMap", sender: self)
}
Ja, das ist behoben! Vielen Dank! – ALTVisual