我已经为AFHTTPSessionManager
提交了子请求。我有一个用于解析传入的JSON的模型类。
我应该在哪里进行获取请求?在我的模型中,ViewController还是应该为请求使用包装器?
在这种情况下哪些是最佳做法?
答案 0 :(得分:2)
我在开始我的项目之前遇到过同样的问题。我是这样做的:
使用AFNetworking完成所有获取/放置HTTP请求的 Base Class
。
Web service class
对基类一无所知 - 只是如何使用它,我在这个意义上使方法通用。
Data class
构造了我请求所需的url /参数。
通过这种方式,应用程序的其余部分对网络层一无所知。数据类知道如何将URL / Parameters放在一起并请求网络调用。而已。 Web服务类知道如何根据提供给它的信息进行调用,从数据类和基类知道如何发出请求,获得响应。
然后我将响应交给基础XML / JSON类,该类开始解析从基本Web服务类返回的数据。一旦数据被解析,它就被存储到数据类中,使用所需的正确模型对象。从那里 - 应用程序只询问数据类的数据。
通过这种方法,应用程序的顶层知道如何请求数据并将其取回。它对该过程的内部工作一无所知。这意味着,在将来,如果我决定更改为不同的网络库,我只需要修改一个类而不是一大堆代码。
在一个坚果壳里,我像这样构造它:
Data class
Data Class
然后构造请求所需的URL和参数Webservice class
从Data Class
获取了网址和参数,并将其放入请求中,然后将其发送到基本Web服务类Base webservice class
然后拨打完整的网址。它处理响应,如果它成功,它将它放入一个NSData
对象 - 然后传递给XML / JSON类Data class
。 一旦完成了原始调用的类已经通知http请求和解析已经完成,它就会向`Data class'询问该数据。
这种分类和他们的责任,很好地解释了我上面提到的原因。更改应用程序的一部分,不需要大量重写许多类。两个,大多数。
我希望这会让你朝着正确的方向前进。