从返回NSArray的方法发出错误信号

时间:2012-05-28 15:57:51

标签: objective-c cocoa-touch error-handling

我有一点架构问题。我有一个方法,它根据服务器的数据返回一个数组。

NSArray *myStuff = [anObject getMyStuff];

显然服务器可能会失败。迎合这个的最佳方式是什么?我正在研究performFetch:的工作原理,但它有一个BOOL作为返回类型。我可以:

NSArray *myStuff = [anObject getMyStuff:&anError];

2 个答案:

答案 0 :(得分:4)

简短的回答是:取决于你

某些Cocoa类确实使用了您描述的简单指针错误对象。如果要从服务器加载数据,您可能需要查看处理asynchronous数据的更复杂的请求/响应系统。

或者,如果您正在寻找一个非常简单的解决方案,请在请求失败时返回nil

答案 1 :(得分:3)

正如e.James之前建议的那样,你应该进行适当的异步处理,其中执行获取的对象将调用一个方法,如果它成功或另一个方法,如果它失败了。
有一个变体,在流行的AFNetworking中使用:向方法传递两个块,一个用于失败案例,一个用于成功案例

这可能看起来像这样:

[client shopsFeedForUserWithID:2 
                       success:^(id response) {
                           blockSelf.shops = [Shop shopsFromReponseDict:response];
                           [blockSelf.tableView reloadData];
                      } failure:^(NSError *error) {
                           //handle the error
                      }];