2016-07-09 8 views
0

Ich versuche, Positionen für jede Zeile in IndexPath.row zu drucken, da IndexPath.row bestimmt, welchen bestimmten Inhalt sie wünschen in der TableView erhalten.Swift: Druckkoordinaten von Firebase: 0,1 - 2,3 statt 0,1 - 1,2

Das NSDictionary von Firebase sieht wie folgt aus: x,y,x,y,x,y und so weiter in Koordinaten.

0,1 = ersten Koordinaten 2,3 = zweiten Koordinaten

Output: [55.617804300000003, 12.98939, 55.601572900000001, 12.979585399999999, 34.506667999999998, -81.948334000000003, -7.0909109999999993, 107.668887] 

So ersten 0 und 1 ist, x, y für den ersten Koordinaten mit folgenden:

print(CLLocationCoordinate2D(latitude: openLocations[indexPath.row], longitude: openLocations[indexPath.row + 1])) 

Wie unsere Ergebnisse ist im Moment:

x= longitude, y = altitude 

x, y 
0, 1 
1, 2 
2, 3 
3, 4 
5, 6 

Wie es sein sollte:

x= longitude, y = altitude 

x, y 
0, 1 
2, 3 
4, 5 
6, 7 
8, 9 

NSDictonary wie folgt aussieht:

x, y, x, y, x, y ..

Dies sollte eine einfache Aufgabe sein, aber meiner Meinung nach im Moment woanders ist, wenn überhaupt könnte helfen Sie mir gerade dies heraus, es wäre sehr geschätzt.

Dank im Voraus,

Mit freundlichen Grüßen

Filip

+0

Ihr Wörterbuch als Wörterbuch gar nicht sehen, eher wie ein Array – Sulthan

Antwort

2

Sie haben jede zweite Zeile nehmen:

latitude: openLocations[2 * indexPath.row], longitude: openLocations[2 * indexPath.row + 1] 
0

In Wirklichkeit, was Sie haben, ist ein Array, können Sie Schleife durch dann wie (asumming, dass Sie die Positionen in Paar erhalten):

var openLocations = [55.617804300000003, 12.98939, 55.601572900000001, 12.979585399999999, 34.506667999999998, -81.948334000000003, -7.0909109999999993, 107.668887] 
for(var i = 0; i < openLocations.count; i += 2){ 
    let location = CLLocationCoordiante2D(latitude: openLocations[i], longitude: openLocations[i+1]) 
    print(location) 
} 

Im Fall mit IndexPath und UITableView zu arbeiten, zunächst einige Möglichkeiten:

Option 1: zuerst die Daten der Karte, die Sie von Feuerbasis zu einer Datenstruktur empfangen, die die Standorte binden. Ex. Es kann ein Array von CLLocationCoordinate2D sein oder Sie haben eine eigene Struktur.

Option 2: Sie müssen einige Änderungen an der Datenquelle Methode tun, nehme:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{ 
    return openLocations.count/2 
} 
Verwandte Themen