iOS网络变得简单

最近,我学到了一种简单的iOS模式,该模式总是使我的头部受伤-网络。 我见过这么多具有​​不同目的和复杂性的解决方案。 但是直到最近,即使您是第一次看到,我也看不到任何通用,可测试和易于理解的东西。

当我加入我的上一个团队时,我们开始以反应性方式做事。 但是今天的教程将精简我们在团队中开发的版本。

本教程的目的是向您展示一种简单的方法来制作自己的内部网络库,这样您就不必依赖第三方库了。

1.打开一个名为“ NetworkLayer”的新Xcode项目。

假设您知道如何打开新的Xcode项目,那么我将把这一部分留给您解决。

2.接下来,我们将清理项目文件夹,如下所示。

我喜欢从一开始就保持项目整洁。 如您所见,我遵循经典的MVVM体系结构,其中大多数逻辑都存在于ViewModel中。

还有一个“网络”文件夹,用于存放与网络相关的任何内容,这将是本教程的核心。

3.那么我们要做什么?

在本教程中,我们将创建一个简单的GitHub客户端,该客户端将显示最受关注的仓库,并可以按语言进行过滤。 我们将基于公共GitHub API进行项目。 https://developer.github.com/v3/

因此,我们将使用具有不同变体的https://api.github.com/search/repositories端点,以过滤要查看的存储库。

而且还将有详细信息屏幕,其中包含有关回购所有者的信息。

4,做骨架

相应地在文件夹中为UI和模型创建以下文件:

 型号:Repos.swift,Repo.swift,User.swift,Response.swift 
视图:RepoTableViewCell.swift
ViewModel:RepoTableViewModel.swift,RepoTableViewCellModel.swift,UserViewModel.swift
控制器:RepoTableViewController.swift,UserViewController.swift

然后是网络层的核心:

 网络:Networking.swift,EndpointType.swift,GitHubAPI.swift 

最后,它应该类似于:

5.现在让我们用一些有意义的代码填充空文件

从更简单的内容开始,让我们用UITableViewControler UINavigationController替换Storyboard的内容。 将UITableViewControler's超类更改为RepoTableViewController.

接下来,您应该自定义设计所需的单元格,但是在本教程中,我将进行通用介绍并显示Repos名称,描述,所有者的名称,语言和星级。

我的版本如下所示:

另外,由于我们要显示有关回购所有者的信息,因此我们需要另一个屏幕来显示用户详细信息,其中包含一些基本标签和图像视图。

6.接下来,我们将使用 Repos Repo 模型。

在Swift 4中,有一个令人兴奋的新功能:带有Codable&Decoable 。 因此,我们将使用这种方式将json数据解析为模型对象。

希望您理解了这个想法,并且对您有所帮助。

我也在GitHub上发布了这个项目。

我必须感谢我以前的团队Sergei Guselnikov的合作伙伴,他是一位出色的iOS开发人员,因为这里包含的一些想法是基于我与他一起工作中学到的。 ✋️