异步HTTP请求在Swift中返回值

时间:2015-02-07 05:54:30

标签: ios rest swift asynchronous

我现在处理设计问题。我正在编写一个Swift应用程序,它有一个带有多个ViewControllers的故事板和一个类HTTPRequests,它们在RESTful Web服务上执行GET和POST请求。

我现在的问题如下。从视图控制器,我必须在Webservice上执行GET请求以获取数据。应通过特定视图上的此视图控制器显示接收的数据。 我现在看到了实现这一目标的两种可能性:

  1. 将Request函数放入ViewController。执行异步请求并在收到数据后立即更新此异步任务中的视图。 出于两个原因,我不太喜欢这种方法。首先,我不想在ViewController中使用Request函数,因为我需要在多个ViewControllers中使用相同的函数,这会导致代码重复。其次,我不想更新asynchronus任务中的视图。

  2. 将Request函数放入HTTPRequests(Singleton)类。从ViewController调用请求并返回返回值。使用此值,ViewController可以更新其视图。 我喜欢这种方法,因为它涉及设计问题"清洁"。我唯一的问题是返回值。如何从Swift中的异步任务返回值? 如果可能请使用代码示例。

  3. 还是有比这两种方法更好的方法吗?

    修改 感谢您的回答和this Blog Post我可以与代表成功实施方法2。

1 个答案:

答案 0 :(得分:0)

您不必使用单例,而是可以使用单独的类(模型)来执行所有Web请求。您可以在模型中实现协议,并将视图控制器设置为委托。对不起,我在手机上,所以我不能包含代码,但我很乐意稍后再添加。