有没有可靠的NSURLConnection替代方案?

3
我的应用正在调用web服务获取一些数据,我希望尽可能地提供最佳体验。我发现使用NSURLConnection很难及时给出良好的反馈。
有时我的iPhone会尝试加载数据一两分钟,我无法弄清楚为什么要花这么长时间,或者下载过程为什么如此麻烦。然后几分钟后,有时会出现错误代码。
我想显示正在发生的情况,例如:
1. "建立互联网连接" 2. "尝试连接服务器" 3. "已连接..." 4. "正在下载数据..." 5. "下载完成!"
如果出现问题,例如服务器不可达或DNS无法解析,只需尝试几次而不是简单地退出并抛出错误,这将是一个不错的选择。
是否有替代NSURLConnection的方法可以更优雅地处理这些情况,并及时反馈正在发生的事情?

你看过NSURLConnectionDelegate了吗?它提供了许多回调函数,但可能被认为是复杂的。 - David Rönnqvist
你可以使用NSURLConnectionDelegate协议来完成3、4、5。 - nhahtdh
3个回答

4
我一直是AFNetworking库的粉丝。使用非常简单,并将所有网络调用封装在易于使用的块中。
此外,它也被保持得很新,因此在项目进展和变老时,您应该可以安全地获取所需的所有更新。

谢谢!它能及时反馈正在发生的事情吗?委托调用或通知? - Proud Member
它不使用委托方法,而是使用块。因此,您开始连接并拥有成功块和失败块。该方法将继续进行,但当连接完成时,它将执行成功/失败块中任何逻辑。您始终可以创建自己的委托方法从这些块内部调用。这就是我的做法。然后,您完全掌握谁会收到通知。 - Bill Burgess

1

我认为你可能在错误地使用NSURLConnection和NSURLConnectionDelegate,因为它们可以满足大部分需求。

但是,MKNetworkKit呢?我一直在使用它,它确实使这些问题更容易处理。


谢谢!它能及时反馈正在发生的事情吗?委托调用或通知? - Proud Member

0

某些东西可以帮助您实现所需的功能。由于ASIHTTPRequest不再受支持,MKNetworkKit将是您的最佳选择。要检查连通性,您可以始终使用Reachability


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接