我有一点架构问题。我有一个方法可以根据来自服务器的数据返回一个数组。
NSArray *myStuff = [anObject getMyStuff];
显然,服务器可能会失败。解决这个问题的最佳方法是什么?我正在研究如何performFetch:
工作,但它有一个BOOL
作为返回类型。我能有......吗:
NSArray *myStuff = [anObject getMyStuff:&anError];
我有一点架构问题。我有一个方法可以根据来自服务器的数据返回一个数组。
NSArray *myStuff = [anObject getMyStuff];
显然,服务器可能会失败。解决这个问题的最佳方法是什么?我正在研究如何performFetch:
工作,但它有一个BOOL
作为返回类型。我能有......吗:
NSArray *myStuff = [anObject getMyStuff:&anError];
简短的回答是:这取决于你。
一些 Cocoa 类确实使用了您描述的简单的指向错误的对象。如果您从服务器加载数据,您可能希望查看处理异步数据的更复杂的请求/响应系统。
或者,如果您正在寻找一个非常简单的解决方案,nil
请在请求失败时返回。
正如 e.James 之前建议的那样,您应该进行适当的异步处理,其中执行提取的对象将调用一个方法,如果它成功或另一个,如果它失败。
这有一个变体,在流行的AFNetworking中使用:将两个块传递给方法,一个用于失败案例,一个用于成功案例
这可能看起来像这样:
[client shopsFeedForUserWithID:2
success:^(id response) {
blockSelf.shops = [Shop shopsFromReponseDict:response];
[blockSelf.tableView reloadData];
} failure:^(NSError *error) {
//handle the error
}];