获取,正则表达式和数据! 搜索公交专用道并获取公交车的位置–我的第一个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”应该是一个标志,指示是否为公共汽车提供了辅助功能
今天就这样!
在下一篇文章中将进行设计,我将准备故事板结构,添加标签和导航栏,选择颜色和图标。
非常感谢!