Swift中的泛型和JSON解码
因此,上一篇文章写了有关如何使用Alamofire进行联网的文章,这使我回想起最初开始获取数据的时间。 一团糟。
就是这样:
假设您需要执行GET请求才能说出两个端点。 您最有可能做什么? 您很可能会复制第一个GET请求,然后将其粘贴并更改一些内容,例如端点和模型等。
您可能会执行以下操作:
当您添加更多请求时,这很快会使您的代码成为噩梦,更不用说看了。
这就是Generics
发挥作用的地方。 我们可以使用更简洁的代码将这两个请求合并为一个函数。
就像上次一样,我将对所有API端点使用https://jsonplaceholder.typicode.com/。
模型
我们的第一个端点是: https://jsonplaceholder.typicode.com/posts
: https://jsonplaceholder.typicode.com/posts
对于/posts
,我们将获取userId
, id
, title
, body
。
实施泛型
现在我们有了数据模型,让我们设置通用函数。
如果您阅读了我有关Alamofire的上一篇文章,您可能会注意到一些差异。
而不是返回responseJSON
我们只是返回response
。
同样,我们只获得response.data
而不是response.data
调用我们的函数
最后,我们在使用JSONDecoder()
地方进行了do catch
。
现在我们可以调用通用函数:
很简单,但是我们只给出一个url字符串,并给它一个可解码的模型。
现在我们有了通用的网络请求,可以将其用于所需的任何端点。 我们只需要创建一个可解码的模型,然后传递url端点即可。
然后再次
让我们调用https://jsonplaceholder.typicode.com/comments
/comments
返回一个postId
, id
, name
, email
, body
。
现在我们要做的就是调用我们的泛型函数。
我们可以继续前进,尽管我觉得您明白了。
如果需要更多请求,只需为该端点创建一个模型,请确保您符合Decodable
,然后调用通用函数并传递url和模型。
如果您需要有关泛型的更多信息,希望本文对您有所帮助。 您可以从Apple签出。
谢谢!