Ios 设计模式HTTP Api
我正在构建一个基于RESTAPI提供的数据的应用程序。我使用alamofire框架从api请求数据。目前一切正常,但在很多方面都有点混乱,所以我想对它进行组织,并使用一些设计模式来更好地控制我的代码 我创建了一些基本上是我的数据层的实体类。每次使用这些对象时,数据层都应该是最新的。数据更新/api连接可能由时间间隔或用户操作触发(如果他编辑一些数据并保存它或类似的内容) 在此之后,如果数据已更改并且viewcontroller处于活动状态,则我的UI应始终更新 问题是数据的请求和接收是异步的,我不知道一种构造所有内容的好方法 此时,对api的请求始终由viewcontroller触发。收到数据后,我通过委派调用viewcontroller本身中的一些方法并更新ui。发送到api的所有不同请求和不同数据都有点混乱。我需要概括一切,把它清理干净。目前的问题之一是,一个viewcontroller只能处理一种请求。例如,viewcontroller只能保存已编辑的帖子,但不能接收帖子,因为接收数据后会调用相同的方法Ios 设计模式HTTP Api,ios,swift,api,http,design-patterns,Ios,Swift,Api,Http,Design Patterns,我正在构建一个基于RESTAPI提供的数据的应用程序。我使用alamofire框架从api请求数据。目前一切正常,但在很多方面都有点混乱,所以我想对它进行组织,并使用一些设计模式来更好地控制我的代码 我创建了一些基本上是我的数据层的实体类。每次使用这些对象时,数据层都应该是最新的。数据更新/api连接可能由时间间隔或用户操作触发(如果他编辑一些数据并保存它或类似的内容) 在此之后,如果数据已更改并且viewcontroller处于活动状态,则我的UI应始终更新 问题是数据的请求和接收是异步的,我
那么,有人知道如何正确地、以一种非常结构化的方式完成吗?也许是一些想法或设计模式,或者是某个大玩家如何处理这些问题。委派当然是一种可以使用的设计模式,但我同意,当您的API不断增长,并且您开始为每个API调用引入新的委派方法时,它会变得混乱 闭包 我想实现异步回调的首选方法是使用闭包。在ViewController中,只需向请求方法传递闭包:
requestHandler.sendSomeRequest(param1, parameter2: param2, completion: { (response) -> Void in
// This is executed asynchronously, but you can still access all properties of your ViewController
// Just make sure you're on the main thread when you need to update your UI
}
RequestHandler方法的定义如下:
func sendSomeRequest( parameter1: String, parameter2: String, completion: ( response: String)->Void ) {
// Send the request, and pass/store the "completion" closure until you get the response back.
// Then, just call:
completion( response )
}
另见
通知
这更适用于OSX而不是iOS,尤其是在多个ViewController对响应感兴趣的情况下,您也可以开始发送通知。但是,这样做会有类似于委托方法的“坏味道”,因为您将开始为每个API响应创建新的通知,所以我不推荐这种方法。是的,这是一种函数式编程方法。我在一些项目中做过,但还是有点混乱。也许我再试一次,重构我的代码。谢谢你的回答!