Swift:来自Firebase的打印坐标:0,1 - 2,3而不是0,1 - 1,2

时间:2016-07-09 16:12:51

标签: ios json swift firebase

我正在尝试在IndexPath.row中为每一行打印位置,因为IndexPath.row确定要在TableView中接收哪些特定内容。

来自Firebase的NSDictionary看起来像:x,y,x,y,x,y,依此类推。

0,1 =第一个坐标 2,3 =第二坐标

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

因此,首先0和1是x,y代表第一个坐标:

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

目前我们的结果如何:

x= longitude, y = altitude

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

应该如何:

x= longitude, y = altitude

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

NSDictonary看起来像:

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

这应该是一项简单的任务,但我现在的想法是在其他地方,如果有任何可以帮我解决这个问题,我将非常感激。

先谢谢,

真诚的,

菲利普

2 个答案:

答案 0 :(得分:2)

你必须采取每一秒:

...

答案 1 :(得分:0)

实际上你所拥有的是一个数组,你可以像往常一样循环(asumming你收到成对的位置):

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)
}

在使用IndexPath和UITableView的情况下,首先你有一些选择:

选项1: 首先将您从firebase接收的数据映射到绑定位置的数据结构。防爆。它可以是一个CLLocationCoordinate2D数组,也可以是您想要的结构。

选项2: 您需要对数据源方法进行一些修改,假设:

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