Swift 5的基本API请求

大家好,今天的文章是有关如何使用Swift 5执行API请求的基础教程。我目前是一名自由职业的iOS开发人员,已完成Udacity的iOS开发纳米学位,并且出于教育目的而编写。

让我们首先在Xcode中创建一个新的单视图项目:

我已经将此项目命名为playingWithRequests 让我们看看这个项目的目标:

  • 了解如何使用Swift 5向API发出请求。
  • 了解如何使用URL和URLSession。
  • 了解请求在Swift中的工作方式。
  • 显示来自互联网的图像。

现在,我们已经创建了项目,接下来将图像拖放到情节提要中。 展开图像以覆盖整个视图,然后将内容模式更改为适合方面的外观,如下所示:

通过将图像放在情节提要中,我们可以创建IBOutlet以便在Swift代码中管理图像:

现在,我们已经准备就绪,可以开始我们的项目了。 对于此示例,我将使用在Google上找到的土星图像。

我们所有的代码都位于viewDidLoad()函数内部。 我们将要使用的第一类称为URL ,它使我们可以表示一个URL。 创建此类的实例,然后粘贴我们的Saturn URL的字符串:

现在我们有了URL,我们将要索取数据。 URLSession类可以管理网络请求,让我们使用它向该网络发出请求 。 我们可以使用自己的设置创建URLSession ,但是在本示例中,我们将使用包含默认设置的类调用共享来执行简单的GET请求。

在开始编码之前,我想再介绍一件事。 当我们使用URLSession时,网络请求称为task 。 记住这一点很重要,因为每次需要与API交互时,我们都会处理任务(请求)。

我们准备创建指向URL的任务,我们将使用类调用dataTask:

我们正在使用URLSession发起对存储在常量imageURL中URL请求 使用此方法,我们有一个完成处理程序,该处理程序将在遇到错误时帮助我们处理数据,首先检查错误变量是否为nil。 现在,我们可以在视图中显示图像:

Swift 5更新:到目前为止,所有代码对于Swift 4都是相同的,但是在继续之前,我想提一下,随着对Swift 5的更新,该库现在包含了一个称为 Result Type的 东西 结果类型的工作方式与 可选类型 一样, 但是在这种情况下,结果类型被实现为枚举。 这对于异步任务非常有效,因为在获取数据之前,我们甚至要求成功或失败。 我们不会在这里看到这个,以后我将为此主题编写一个特定的教程。

如果我们现在运行项目,您将不会在应用程序中看到任何内容。 我们具有请求的代码,但是我们需要使用方法调用resume()来运行任务:

现在,如果我们运行我们的应用程序,您将看到一个空白页。 按下cmd + shift + h以模拟单击主屏幕按钮,然后再次打开该应用程序。 该图像将出现:

我将介绍为什么我们需要按下主屏幕按钮并在下一部分中再次打开该应用程序,但是基本上,这是由于我们的功能在该应用程序的后台运行并且需要置于前台。

我希望你们喜欢这个作品。 这很基本,但是如果您有任何问题,请发表评论或给我发送电子邮件,我将继续写有关Swift主题的文章,所以请关注我,让我知道您是否想学习任何特定的主题。

问候!