1

我有一点架构问题。我有一个方法可以根据来自服务器的数据返回一个数组。

NSArray *myStuff = [anObject getMyStuff];

显然,服务器可能会失败。解决这个问题的最佳方法是什么?我正在研究如何performFetch:工作,但它有一个BOOL作为返回类型。我能有......吗:

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

2 回答 2

4

简短的回答是:这取决于你

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

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

于 2012-05-28T16:04:00.793 回答
3

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

这可能看起来像这样:

[client shopsFeedForUserWithID:2 
                       success:^(id response) {
                           blockSelf.shops = [Shop shopsFromReponseDict:response];
                           [blockSelf.tableView reloadData];
                      } failure:^(NSError *error) {
                           //handle the error
                      }]; 
于 2012-05-28T16:23:39.547 回答