在典型的分层架构中,如何有效地将源自数据访问层的错误传达给UIViewContoller?
我有以下设计:
UIViewControllers --> 数据控制器 --> 特定的serviceproxy --> serviceproxybase
serviceproxybase 启动对 Web 服务的调用。我在对 Web 服务调用操作之前检查网络可用性,并希望在网络出现故障时提醒用户。
最佳实践解决方案是什么?谢谢。
在典型的分层架构中,如何有效地将源自数据访问层的错误传达给UIViewContoller?
我有以下设计:
UIViewControllers --> 数据控制器 --> 特定的serviceproxy --> serviceproxybase
serviceproxybase 启动对 Web 服务的调用。我在对 Web 服务调用操作之前检查网络可用性,并希望在网络出现故障时提醒用户。
最佳实践解决方案是什么?谢谢。
按照我的大部分 Cocoa-touch 使用的模式。许多方法返回nil或NO出现错误时,这些方法有一个NSError输出参数,其中包含有关错误的详细信息。
您可以根据需要传播结果并向上层错误。或者一个层可以用一个更特定于层的错误来包装错误并传递新的错误。
遵循此模式的示例方法是:
NSFileManager copyItemAtPath:toPath:error:
NSFileManager attributesOfItemAtPath:error:
您可以使用NSNotificationCenter来发布和接收NSNotification各种错误状态。
在serviceproxybase您将发布通知给任何感兴趣的观察者:
[[NSNotificationCenter defaultCenter] postNotificationName:@"NoConnectionNotification" object:nil userInfo:someErrorInfoObject];
通常,您会打包一个对象someErrorInfoObject,向观察者提供一些额外的详细信息,例如NSError对象、失败的服务请求或服务的错误代码。在视图控制器中,您将在viewDidLoador中侦听该通知viewWillAppear:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleNoConnectionError:)
name:@"NoConnectionNotification"
object:nil];
现在,每当发布带有名称的通知时NoConnectionNotification,视图控制器都会收到一条handleNoConnectionError:带有相应NSNotification.