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开发人员,因为这里包含的一些想法是基于我与他一起工作中学到的。 ✋️