Swift

时间:2015-12-07 15:02:46

标签: ios swift error-handling delegates

我正在创建一个名为WeatherService的类,它基于一个位置将提供天气预报(惊喜!)。这里有很多可能出错的事情;找不到位置,天气服务无法到达,......

该服务有一个名为weatherFor的方法,以location个对象作为参数。它是异步的。

我正在使用Swift 2.所以我一直在阅读Swift 2.0中的错误处理,似乎有多种来源描述的方式,这是一个带有成功处理程序和错误处理程序的ResultType的闭包。我应该用吗?或者我应该创建一个委托并像许多框架对象那样传递错误吗?我已经有了气象服务的代表,因为我需要知道什么时候开始,什么时候开始等等。

委托协议的方法如下:

  • 开始天气预报搜索
  • 结束天气预报搜索

但是我不知道我是否也应该在代理中添加一个方法,当天气服务内部发生不良事件时发生错误,无法找到天气预报,或者如果不好?我猜调用“错误方法”的代理在Swift中并不坏?

1 个答案:

答案 0 :(得分:2)

如果您只有一个其他对象有兴趣接收有关进度,错误等的通知,您可以使用闭包或委托。它取决于错误发生的时间和地点。如果您只需要在进行weatherFor调用时传递错误或说明,则可以使用闭包解决方案。如果错误可以“随时”发生,即使在获得天气之后或之前,您也应该使用委托解决方案。或两者兼而有之。

另一种方法是在发生错误时发布通知。这意味着多个对象可以同时监听更新。