首先,说明下我在完成任务的途中遇到的问题:
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(这两个东西这几天我也会写成博客,点击我的头像看吧)通俗的说一个是限制程序运行一次,避免循环引用,一个是重新加载。
---------------------
作者:Miaoleigemi
来源:CSDN
原文:https://blog.csdn.net/miaoleigemi/article/details/81240800
版权声明:本文为博主原创文章,转载请附上博文链接!