我应该在哪里放置发出Http请求的方法以从iOS开发中的Web服务获取数据?


9

我的iOS应用程序中有一个Model Car,其中从网络服务中获取了诸如名称,年份,值等参数,以便用汽车数据填充列表。

我应将异步发送到服务器并返回汽车数组的方法放在哪里(该方法已将JSON转换为汽车数组)?

我当前的方法是Car类中的静态方法,该方法接收HttpClient(这样我就可以模拟客户端对它进行单元测试)并返回NSArray的汽车,这样好吗?

你们在这种情况下做了什么?

我很担心,因为我最近开始阅读干净的代码,该代码说一个类只能做一件事,而现在我拥有它的方式似乎可以做两件事(保存有关汽车的信息并获取汽车列表)。

Answers:


4

我建议使用一个CarBroker对象,该对象处理对Cars的请求并公开如下方法:

  1. getCars-用于获取所有汽车的列表。
  2. getCarByID-特定汽车。

此外,这样的对象可以处理来自其他汽车经纪人的请求(应该这样做)。无论哪种方式,它都具有一个真正的责任领域- 代理汽车 -而不是成为具有汽车对象和对象代理人职责的汽车对象。


这听起来不错,因为现在您有了一个可以重用的干净的Car对象。如果您开始使用另一种访问协议来获取数据怎么办?在这种情况下,您需要从某个地方开始,您知道一侧上的所有处理\规则\逻辑代码都接受Car对象。然后,您可以开始使用REST或其他方法重新实现CarBroker,但是您已经完成了一半,不必重新编程和重新测试本质上仅与Car抽象有关的逻辑。
安迪斯·史密斯

1

在这里,需要将另一个对象保留在某个地方,这不能保证父对象始终活着以处理响应。

我建议将这些实现保留在单例类中。对于经常调用的通用方法实现,保留此类也很有用。


-1

当数组从Web返回时,可以在ViewDidLoad方法内部调用异步方法,刷新视图。可以将数组保存在数据库中,因此不必每次加载Viewcontroller时都从Web加载数据。


3
这如何回答所提问题?
2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.