带有枚举的Nifty,Bug-Safe URL

这是一个分为四部分的系列文章的第二篇,该文章名为: Nifty,Swifty,API支持的App 您可以在 此处 分叉最终项目

第1部分:具有GitHub Pages的Nifty静态内容托管

第3部分:具有可分解功能的漂亮自构对象

第4部分:带有NSCache的漂亮的自动缓存ImageView

介绍

在上一篇文章中,我们设置了静态内容宿主,并在Xcode项目中创建了一个非常简单的APIService,下载了一些json内容。 调用下载json的方法如下:

我们可以在第一行看到传递的字符串相当长,这是在根目录中获取数据。 想象一下,当我们导航到层次结构中更深的文件时,字符串将得到多长时间! 显然,URL路径越长,我们的代码就越容易受到拼写错误的影响。

在本文中,我们将创建一个枚举,以最简单,最安全的方式处理所有文件路径。

创建URL枚举

在我们的应用程序中,URL将仅由我们在上一篇文章中构建的APIService使用。 因此,有意义的是,处理我们不同的url大小写的枚举位于同一实体中。 这是我们的两种情况:

您会注意到baseURL存在于枚举之外,这在每种情况下都是必需的(第3行) 。 我们的枚举有两个变量: path (第9行)url (第16行) 。 这是因为我们要使用字符串构建路径,然后使用该路径来初始化我们的URL。 注意,在url结构(第18-19行)中 ,我们可以简单地调用self.path来获取所需的字符串。 因为objectData.json是我们唯一需要的根文件,所以其路径构造非常简单(第11行) 。 另一方面,获取我们的图像需要一个图像文件名作为关联值,作为我们的终点。 要提取关联的值并将其用于我们的字符串构造中,请使用let (第12行)

使用URL枚举

现在,我们可以将输入参数更改为新的APIURL类型,而不是将冗长的字符串传递到fetchData方法中

文件1:在方法定义中,我们以枚举形式作为输入参数,因此我们需要使用apiURL.url (第3行)来获取URLSession的url。

文件2:现在,当我们可以调用方法时,可以使用非常简单的点表示法.json (第1行)

包起来

这就是每次提供安全网址的简单程度! 使用具有关联值和计算变量的枚举非常强大,并且可以最大程度地确保您的URL可以正常使用,从而使您可以灵活地获取所需的任何端点。

请单击此处阅读第3部分: 具有Decodable的Nifty自构造对象 ,在这里我们使用json安全构建对象并且没有疯狂的解析。 谢谢阅读!