Swift中的泛型和JSON解码

因此,上一篇文章写了有关如何使用Alamofire进行联网的文章,这使我回想起最初开始获取数据的时间。 一团糟。

就是这样:

假设您需要执行GET请求才能说出两个端点。 您最有可能做什么? 您很可能会复制第一个GET请求,然后将其粘贴并更改一些内容,例如端点和模型等。

您可能会执行以下操作:

当您添加更多请求时,这很快会使您的代码成为噩梦,更不用说看了。

这就是Generics发挥作用的地方。 我们可以使用更简洁的代码将这两个请求合并为一个函数。

就像上次一样,我将对所有API端点使用https://jsonplaceholder.typicode.com/。

模型

我们的第一个端点是: https://jsonplaceholder.typicode.com/posts : https://jsonplaceholder.typicode.com/posts

对于/posts ,我们将获取userIdidtitlebody

实施泛型

现在我们有了数据模型,让我们设置通用函数。

如果您阅读了我有关Alamofire的上一篇文章,您可能会注意到一些差异。

而不是返回responseJSON我们只是返回response

同样,我们只获得response.data而不是response.data

调用我们的函数

最后,我们在使用JSONDecoder()地方进行了do catch

现在我们可以调用通用函数:

很简单,但是我们只给出一个url字符串,并给它一个可解码的模型。

现在我们有了通用的网络请求,可以将其用于所需的任何端点。 我们只需要创建一个可解码的模型,然后传递url端点即可。

然后再次

让我们调用https://jsonplaceholder.typicode.com/comments

/comments返回一个postIdidnameemailbody

现在我们要做的就是调用我们的泛型函数。

我们可以继续前进,尽管我觉得您明白了。

如果需要更多请求,只需为该端点创建一个模型,请确保您符合Decodable ,然后调用通用函数并传递url和模型。

如果您需要有关泛型的更多信息,希望本文对您有所帮助。 您可以从Apple签出。

谢谢!