用AFNetworking获取URL数据后显示在tableview上(3)

一。错误

#代码贴最后了

首先,说明下我在完成任务的途中遇到的问题:

1.报错说我返回cell无法显示

2.执行parseData(解析数据函数)时会跳过,可以打印URL的值,但返回的读取值为空

3.返回的cell的内容但没办法显示在tableview上

二。解决问题1

返回的cell无法显示的问题比较简单,因为我原本想输出一本书的:书名,作者,价格,出版社,但是因为初次尝试,虽然在NSObject申明了四个(相当于结构体)但是只返回了name,在  -(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath     定义cell时,返回值只写了book,但是book应该有name,price,publisher,author,所以程序就报错了,这时只要说明返回为book.name就行了。

          解决问题2

要解决这个问题,需要先了解

AFHTTPSessionManager *session =[AFHTTPSessionManager manager];

    [session GET:@"https://api.douban.com/v2/book/1220562"parameters:nil

这个函数,这个函数与上一篇所说的NSURL不同,这个函数会先运行比URL还底层的东西(我理解的哈),这样就导致它先要运行完底层的内容,返回后确认得到是success还是failure之后,才再运行success和failure底下的内容。通俗的说相当于这个函数要运行两次,第一次到最底层,不会执行success和failure底下的内容,第二次运行才会执行,因此在执行时我的parseData(解析)第一次是不会运行的,第二次才有用,而我断点调试没有一直向后,也就没有发现这个函数最后还会再次运行。

         解决问题三

无法将我设置的cell显示出来,在断点调试时可以发现函数  -(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath(返回cell样式)没有执行,原因和上面一样,因为第一遍AFH那个函数到最底层去了,所以我啥数据都没得到,因此我的设置cell数目return一个nil,那么之后的返回cell样式的函数也就没有执行了,要解决这个问题需要使用一下weak加载reloadData(这两个东西这几天我也会写成博客,点击我的头像看吧)通俗的说一个是限制程序运行一次,避免循环引用,一个是重新加载。

三。贴代码

谢谢观看

猜你喜欢

转载自blog.csdn.net/miaoleigemi/article/details/81240800
今日推荐