Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift中的委托模式与错误处理_Ios_Swift_Error Handling_Delegates - Fatal编程技术网

Ios Swift中的委托模式与错误处理

Ios Swift中的委托模式与错误处理,ios,swift,error-handling,delegates,Ios,Swift,Error Handling,Delegates,我正在创建一个名为WeatherService的类,它基于一个位置提供天气预报(惊喜!)。这里有很多事情可能会出错;找不到位置,无法访问气象服务 该服务有一个名为weatherFor的方法,该方法将location对象作为参数。它是异步的 我用的是Swift 2。因此,我一直在阅读Swift 2.0中的错误处理,似乎有一种方法是多个源描述的,那就是使用ResultType和一个成功处理程序和一个错误处理程序的闭包。我应该用这个吗?或者我应该像许多框架对象那样创建一个委托并传递错误吗?我已经有一名

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

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

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

委托协议具有以下方法:

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

但是我不知道我是否也应该在委托中添加一个方法,当天气服务内部发生错误时调用该方法,告知发生了错误并且无法找到天气预报,或者这是错误的?我想在Swift中调用带有“错误方法”的委托并不坏?

如果您只有一个对象对接收有关进度、错误等的通知感兴趣,那么您可以使用闭包或委托。这在某种程度上取决于错误发生的时间和地点。如果在调用
weatherFor
时只需要传递错误或状态,则可以使用闭包解决方案。如果错误可能“随时”发生,即使是在天气预报之后或之前,您也应该使用代理解决方案。或者两者兼而有之


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

您能举例说明如何使用闭包进行监听吗?进度更新和错误处理会是什么样子?这完全取决于WeatherService类的工作方式以及您希望跟踪的进度。我在问题中补充道,何时开始,何时完成。既然您已经为此设置了一个代理,我建议您为错误处理添加另一个委托方法。好的,然后将ErrorType作为参数传递给它,我想是吧?授权是“旧方式”而闭包是“新方式”,还是闭包只有在成功或失败等结果很少时才有用?