喜马拉雅IOS开发笔记
1. Viewcontroller
二、 requestXmData => XMRqeType_SearchAlbums
这个参数是一个枚举类中的一个类别 具体的枚举类 在SDK中 Unity 包中的 XMSDKInfo 类中
这时我们一直藏在心底的疑问得到了解答,请求数据一般因该有一个接口呀,尽管我们把关键字这些封装在了字典里面,但是没有目标接口,SDK给我们的不是直接的接口而是枚举请求类型,
Viewcontroller 的 showReciveData 方法
NSMutableArray基本概念 – iFat – 博客园 (cnblogs.com)
好长的model
重点在这句, 我们将 result 就是我们得到的专辑级别的数据,与 dataClass(专辑实体类),数据进行一一映射,形成一个专辑类型的数组,可以说至此我们的数据从网络数据转化成了model(专辑实体类),这句程序我们后面还会再次提到,很神奇(我的OC没学好)
2. GerneralTableViewController 控制器
对应的页面
图片加载设置
https://blog.csdn.net/panjican/article/details/51314307
3. didSelectRowAtIndexPath
至此,我们实现了专辑列表的展示,可能大家会有疑问,专辑下面还有声音列表呀。官方把这些业务代码写在了didSelectRowAtIndexPath方法里面
进入方法,就是array[0]数据的类型的判断,我们直接进入第二个分支
//如果类型数据类型已经到了album类型了
else if ([self.array[0] isKindOfClass:[XMAlbum class]])
{
//把当前点击的目标(专辑)初始化成对象
XMAlbum *album = self.array[indexPath.row];
NSLog(@"-------------进入XMAlbum判断------------------");
NSLog(@"%@", self.array[0]);
NSMutableDictionary *params = [NSMutableDictionary dictionary];
//判断是否付费
//在我们没有第三方登录之前这个分支不会执行
//isPaid: -1 - 无此属性;0 - 免费专辑;1 - 付费专辑
if (album.isPaid) {
...
}
//封装参数
[params setObject:@(album.albumId) forKey:@"album_id"];
[params setObject:@20 forKey:@"count"];
[params setObject:@1 forKey:@"page"];
[[XMReqMgr sharedInstance] requestXMData:XMReqType_AlbumsBrowse params:params withCompletionHander:^(id result, XMErrorModel *error) {
[sself showReceivedData:result className:@"XMTrack" valuePath:@"tracks" titleNeedShow:@"trackTitle"];
}];
}
我们可以看到 我们在页面上点击了一个专辑后,会生成另一个请求
二、 请求类型
requestXMData => XMReqType_AlbumsBrowse
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IkzZGJs7-1673928551968)(C:UsersputhmarsAppDataRoamingTyporatypora–user–imagesimage-20220430185429679.png)]
三、总结
4. showReceivedData
这个方法之前讲过,这里不过是在这个控制器里面又重新写过一遍,所以请大家注意各个参数传入的是啥
通过之前的讲解大家肯定也会明白,这个方法产生的model已经不是专辑了,而是声音(XMTrack数组)
接着又将页面和models推到了GerneralTableViewController , 这次我们的table列表展示的数据就是根据我们点击的专辑的ID,得到的声音(XMTrack)列表,
我们再次进入方法 didSelectRowAtIndexPath,这次执行的分支是分支
//如果数据已经是XMTrack类型了
else if([self.array[0] isKindOfClass:[XMTrack class]])
{
//直接实例化了播放页面控制器
PlayingViewController *playingViewController = [[PlayingViewController alloc] init];
//页面之间传值
playingViewController.track = self.array[indexPath.row];
NSLog(@"-------------进入播放页------------------");
NSLog(@"%@", self.array[0]);
playingViewController.trackList = self.array;
NSLog(@"%@", self.array);
//跳转
[self.navigationController pushViewController:playingViewController animated:YES];
}
//下面的不考虑 如果大家想要接入下面的内容,思想也大差不差
//如果数据已经是XMRadio类型了
else if([self.array[0] isKindOfClass:[XMRadio class]]){
...
}
//如果数据已经是XMRadioSchedule类型了
else if ([self.array[0] isKindOfClass:[XMRadioSchedule class]]){
...
}
5. PlayingViewController
— end
原文地址:https://blog.csdn.net/weixin_46053210/article/details/128714485
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_11155.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!