获取,正则表达式和数据! 搜索公交专用道并获取公交车的位置–我的第一个Swift应用

您可以在这里找到我以前的文章的链接:

常量,服务管理器和API身份验证。
我的第一个Swift App medium.com

在上一篇文章中,我创建了一个名为“服务管理器”的类,并在其上添加了一些功能以使用API​​验证应用程序。

今天,我将在此处添加其他功能,以搜索公交专用道并获取所选车道的公交位置。

我将从那里添加一个名为makeHttpGetRequest的函数开始,这次回调将返回JSON和错误字符串。

* JSON类型是SwiftyJSON容器的一部分。

现在,使用searchForBus函数。

在测试此代码之前,只需要对一个问题进行排序。 在巴西葡萄牙语中,这些单词可以具有特殊字符,例如:Pompéia,Petrônio,Carrão; 由于搜索不支持这种字符,也不支持Itaim Bibi等组成的名称,因此,我将创建一个基本的regex函数来替换这些单词。

在此正则表达式上,我将传递用户键入的文本,如果出现这些特殊字符,则将替换它们,并且,该请求不支持空格,该方法在此方法中被+符号替换,因此,如果用户搜索Itaim Bibi ,则该请求看起来像Itaim + Bibi 此功能将提供给搜索项的最后一种处理是将单词返回为小写,因此最后它看起来像是itaim + bibi

最终请求网址应如下所示:

  http://api.olhovivo.sptrans.com.br/v0/Linha/Buscar?termosBusca=itaim+bibi 

现在,是时候在AppDelegate上测试此代码了。

首先,我要对应用程序进行身份验证,然后调用该函数来搜索公交车,并传递“ Itaim Bibi”一词。

这是此请求结果中的一个对象。

大! 现在我有了代表公交专用道的对象。

现在,我将在服务管理器上创建一个函数,该函数将获取该通道上所有总线的位置,我将使用整数“ CodigoLinha”在请求返回时表示的通道代码。

我将接收到的整数转换为字符串,以使其成为我在此函数上创建的请求URL的一部分。

让我们在AppDelegate上对其进行测试。

这段代码看起来一点也不好 ,但是至少我能够测试所有请求并看到一切正常,得到了预期的结果,现在我可以删除这些代码行了。

这是结果。

再次有关于API的文档。

Áreade Desenvolvedores SPTrans – GTFS
作为需要信息的API的HTTP协议的使用,可以作为一种必要的信息。www.sptrans.com.br

不幸的是,在此特定结果上,文档没有说明这些值是什么。

让我们尝试猜测:

“ hr”应该是搜索时间或上次更新时间。

“ vs”应该是公交车位置的数组

“ p”应为停止码(不要在此应用上使用该停止码)

“ px”“ py”应为经度和纬度

“ a”应该是一个标志,指示是否为公共汽车提供了辅助功能

今天就这样!

在下一篇文章中将进行设计,我将准备故事板结构,添加标签和导航栏,选择颜色和图标。

非常感谢!