我正在开发一个购物应用程序,我使用Web服务来获取数据,即产品列表等。但是加载时间太长,因此我的应用程序非常慢。
这个问题有解决办法吗?
下面是我试图获取产品列表的代码。
NSURL * Url=[NSURL URLWithString:@"URL/api/product"];
NSData * Data=[NSData dataWithContentsOfURL:Url];
NSString *str=[[NSString alloc]initWithData:Data encoding:NSUTF8StringEncoding];
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:[strinng dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:nil];
无法放置JSON响应,因为它太多了。
答案 0 :(得分:3)
此方法没有RIGHT
或WRONG
方式。但是对于快速数据加载,我们可以考虑一些要点。我可以提到这些要点,还有许多其他要点:
AFNetworking
(针对目标c)或Alamofire
(针对swift),用于调用Web服务并获取响应。viewDidLoad
中做太多事情。尽量少做操作。viewDidLoad
或viewWillAppear
中调用网络服务(每次访问屏幕时都会调用它)AFNetworking
和Alamofire
Load More
功能。为此,您的API应该足够智能,使用pagination
。UITableView
或UICollectionView
显示可重复使用的组件。直到现在我可以突出这些要点。如果我发现了其他任何内容,我会更新我的答案。
答案 1 :(得分:1)
如果你展示你为此做了什么会更好,但根据你的要求我会建议你,
使用AFNetworking
与服务器通信,速度更快。
如果您在新ViewController
中向服务器发送请求,请确保您要在viewWillAppear
中发送请求。
尽量避免同时获取太多数据。
尝试使用Asynchronous
请求意味着它不会等待。您使用异步意味着它不会等待。表示启动该操作的线程将在继续之前等待任务完成。
答案 2 :(得分:1)
只需使用NSURLSession即可。它是来自Apple的优秀API。只需记住在完成块中使用dispatch grand central get mainQueue来更新任何UI。
答案 3 :(得分:0)
在App启动(AppDelegate
)时开始从API加载数据并将响应数据存储在模型中。这样可以减少时滞。您也可以尝试将响应保存到CoreData中,并在加载视图时刷新数据。
希望这有帮助。
答案 4 :(得分:0)
当您收到的数据丰富时,无法为您加快进程。