如何将普通Cell视图变成网络加载?

 

获取网络数据的方式很多,在这里我们通过三方库方式进行请求、对最常见的JSON数据进行解析。首先,我们需要建立...



获取网络数据的方式很多,在这里我们通过三方库方式进行请求、对最常见的JSON数据进行解析。

首先,我们需要建立一个新工程,这里不做过多讲解,相信各位对此操作已经十分熟悉,有了新工程,我们需要拖入三方库,对其进行基本配置,具体操作如下图。



拖入三方库后,我们还需要对http兼容支持配置,找到工程文件info选项,随便找到一个选项选择添加,输入App,选择App Transport Security Settings,点开App Transport Security Settings,添加一个Allow Arbitrary Loads,再在右边选项将默认的NO改为YES。

这样做的目的是兼容http,苹果9.0系统以后推荐方法变化,所以需要配置兼容。



到这里,基本配置我们已经做完,可以开始进行代码的书写步骤,书写代码之前,我们需要先将思路理清,我们应该先对数据进行请求,然后解析数据,封装到模型,最后通过模型将我们需要的值传递到Cell上。

第一步:从网络请求数据,并对其进行相应的解析,封装模型。这里我们使用第三方库GET方式请求,操作起来十分简单,具体代码如下



这里我们需要使用三方库提供的方法和数据模型,所有我们需要导入三方库的头文件和数据模型的头文件,在这里需要特别注意一下,由于我们采用映射的方式来存储对应的属性,我们首先要保证模型中的属性名称和JSON中的名称对应,具体模型中的代码如下



这里离可能已经发现了,为什么第一个属性名称是myId,不是JSON中的id,这是因为系统关键字中包括id,当我们使用相同名字的时候,系统无法识别,会出现错误。那么我们需要怎么办呢?在这里有两种方式可以处理,第一种方式如下图



这种方式使用比较直接,但是也相当的繁琐,如果我们属性较多,使用起来就相当复杂,代码也相当的多。那么我们能不能继续使用映射的方法呢?答案肯定是肯定的,要使用映射的方法,出现这种和系统关键字一样的情况下,我们需要在对应模型的.m文件中写一个方法即可,具体方法代码如下图



然后我们需要将封装好的数据从模型中取出,放入Cell中(这里我们就用系统提供的Cell),要使用Cell,我们可以通过Main.storyboard直接拖拽一个TableView,对其代理方法进行连线即可。

要使用代理方法,我们就必须遵守想对应的代理(这里是TableView的UITableViewDataSource和UITableViewDelegate)。这里我们需要用到的代理方法如下图



到这里,我们已经完成一个简单的Cell视图,并且将其变成从网络加载内容。这里强调几点问题,首先是我们需要刷新UI,不然你会发现无论怎么也不会有网络数据出现,其次是我们需要设置图片没有下载完之前的默认图片,不然会出现图片一直不加载的问题。

最后附上工程具体文件图


    关注 季末微夏


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册