在典型的分层体系结构中,如何有效地将源自数据访问层的错误传递给UIViewContoller
?
我有以下设计:
UIViewController
s -> datcontroller -> specificserviceproxy -> serviceproxybase
serviceproxybase发起对web服务的调用。我在调用web服务上的操作之前检查网络可用性,并希望在网络崩溃时提醒用户。
最佳实践解决方案是什么?谢谢。
遵循我所使用的模式。当出现错误时,许多方法返回nil
或NO
,这些方法有一个NSError
out参数,其中包含有关错误的详细信息。
您可以根据需要将结果和错误传播到各个层。或者一层可以用更层特定的错误包裹错误,并传递新的错误。
遵循此模式的示例方法有:
NSFileManager copyItemAtPath:toPath:error:
NSFileManager attributesOfItemAtPath:error:
您可以使用NSNotificationCenter
发布和接收各种错误状态的NSNotification
s。
在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
的通知被发布时,视图控制器将接收到一个带有相应NSNotification
的handleNoConnectionError:
的消息