Swift-将枚举用作工厂

不飞溅是关于照片的全部。 您可以搜索照片,查看新照片,查看集合中的照片,查看摄影师的照片,查看用户喜欢的照片…

来自不同来源的照片列表都是一样的。 在iOS应用中,我使用了辉煌的Swift enum作为工厂来生成请求和数据源。

等一下,是一英镑。

网络要求

以下是从API检索照片的一些方法:

  • 新照片
  • 搜索
  • 收藏的照片
  • 用户的照片
  • 用户的喜欢的照片

所有这些端点都返回带有分页的照片列表。 为了处理分页,我遵循了CloudKit中使用的游标概念。 对CloudKit进行分页查询时,它将返回CKQueryOperation.Cursor对象,可用于初始化下一页的查询。 这是一个不透明的对象,我不知道它拥有什么属性,但是我喜欢这个概念。

这是我在iOS应用中创建的游标类型:

parameters属性会传递一些特定于端点的参数,例如排序顺序,集合ID,搜索查询…

游标与以下PagedRequest协议一起使用:

每个分页的API端点都有一个对应的Request对象,该对象遵循PagedRequest协议,因此这些对象使用游标初始化,并可以为下一页生成游标。 它们还具有生成其初始光标的类函数。 例如,这是搜索的对象:

数据来源

显示照片的视图控制器使用DataSource对象,该对象利用了这些分页的请求。 使用支持以下协议的工厂对象初始化数据源:

DataSource使用该工厂对象来获取请求对象,并执行它们以从API中检索照片。 它不知道照片是否来自搜索,收藏,用户喜欢……

该工厂

这是the的东西。

该应用程序将enum用作支持RequestFactory协议的工厂。 看起来像这样:

可是等等! 还有更多! 枚举还生成DataSource对象。

回顾一下,工厂产生了三件事:

  1. 分页的初始光标
  2. 要求
  3. 数据源

最后,懒惰

该应用程序使用单个PhotosViewController来显示照片,无论它们来自什么API终结点。

以下是创建显示搜索照片的视图控制器的方法:

Interesting Posts