快速链接方法-(不要与可选链接混淆)
我在说的api调用看起来像这样:
在这里,我们正在Almofire
类上调用一个称为request
的方法。 接下来是一个称为validate(statusCode:)
方法,然后是另一个名为validate(contentType:)
。 最后,我们可以看到一个名为responseData
的方法,该方法带有一个trailing closure
,该trailing closure
返回api调用的输出。
它是如何工作的?? 好吧,逻辑很简单。
使函数可链接非常容易,并且可以允许我们使用几乎类似于DSL的语法进行编写。
我们将添加一个执行某些操作的新函数,然后返回
self
。 就这么简单。
让我们更清楚一点。 我们通常有一个init
方法来初始化类的对象。 我们可以有多个designated
convenience
初始化程序,以使我们的工作更加轻松。 我们可以使用自定义参数来初始化类对象。 考虑一个叫做Celcius
的类。
class Celsius {var temperatureInCelsius:Doubleinit(fromFahrenheit华氏度:Double){temperatureInCelsius =(fahrenheit — 32.0)/ 1.8} init(fromKelvin kelvin:Double){temperatureInCelsius = kelvin — 273.15} func printTemperature(){print(“温度为( temperatureInCelsius)”)}}
我们有两种初始化方法,一种以kelvin
接受温度,另一种以fahrenheit
接受温度。 下面的语法创建一个Celcius
类的对象,并使用该对象,我们可以调用一个实例方法。
摄氏(来自开尔文:400).printTemperature() //打印温度为126.85
如果您知道上面的代码是如何工作的,那么很容易理解本文开头提到的almofire
方法链接。
链接方法示例:
让我们创建一个APICaller
类。
一个api调用通常有一个url
,一个http method
和parameters
。 如果我们使用上述类进行API调用,它将看起来像这样。
let params = [“ key1”:“ value1”,“ key2”:“ value2”] APICaller()。urlString(“ www.google.com”)。method(.post).parameters(params).response {(resultDict )inprint(resultDict [“ result”]!)} // ---------------- //在控制台中输出以下内容。 ( “结果值1”, “结果值2”, “结果值3”, “结果值4” )
让我们拆分以上调用。
- 创建一个
APICaller
类的实例。 - 使用字符串作为参数调用
urlString
方法。 这将在APICaller
类中设置url
属性并返回self
。 - 调用
method
方法,该method
设置APICaller
类的method
属性并返回self
。 - 调用
parameters
方法,用于设置api调用的参数并返回self
。 - 最后,调用名为
response
的方法,该方法具有一个结尾的闭包作为参数。 在这里,进行API调用,并在成功或失败时,使用结果对象调用回调闭包。 在这里,闭包仅接受Dictionary
类型的Dictionary
。
我希望一切都清楚。 我们可以使用具有所有这些参数的单个init方法,然后调用一个方法,该方法又调用api并返回响应。 但是,这里最大的优点是我们仅在需要时才需要调用任何链接方法。 如果正在执行get
方法调用,则可以跳过method
方法调用,因为get是代码内的默认方法。 另外,如果不需要参数,我们也可以跳过这些参数。
我们的目标是编写更少的代码,这更有意义!
请享用!!