我有一点架构问题。我有一个方法,它根据服务器的数据返回一个数组。
NSArray *myStuff = [anObject getMyStuff];
显然服务器可能会失败。迎合这个的最佳方式是什么?我正在研究performFetch:
的工作原理,但它有一个BOOL
作为返回类型。我可以:
NSArray *myStuff = [anObject getMyStuff:&anError];
答案 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
}];