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