JSON

(IOS)Swift2.0 Radio 程序分析

字号+ 作者:H5之家 来源:H5之家 2015-10-14 11:03 我要评论( )

(IOS)Swift2.0 Radio 程序分析苦咖啡Swift Objective-C IOS开发平台

本文主要分享下楼主在学习Swift编程过程中,对GitHub上的一个开源项目Swift Radio的研究心得。

 

项目地址:https://github.com/swiftcodex/Swift-Radio-Pro

 

一、界面

 

在这个项目中一共包含了6个界面控制器,其中包含了5个用于分别显示电台频道(Swift Radio)、正在播放(Now Playing View)、电台信息(Info View Controller)、app信息(Menu View Controller)和app特征及联系邮箱(About View Controller)的View Controller及一个Navigation Controller。

 

二、电台歌曲来源及实现原理

 

本项目通过调用提供的API从而实现电台功能。楼主将对其调用的API进行简单的介绍及分析。

  1)[yoururl.com]/json/stations.json 用于获取电台信息,返回格式为JSON。

    本项目中, 作者并未使用此API,而是内置JSON格式的电台数据。

  2)?method=track.getInfo&api_key=[api_key]&artist=[artist]&track=[track]&format=json 通过传递api_key,aritst和track三个参数来获取歌曲信息。

    例如:?method=track.getInfo&api_key=9a267c245324cfa4f887366d497d3dd3&artist=The%20Gossip&track=Coal%20To%20Diamonds&format=json

    

    其中name为歌曲名,artist为歌手信息,album为专辑信息。

    本项目中, 作者通过获取正在播放的MPMoviePlayerController()中的Metadata得到artist和track参数,再通过将参数传递到API中,获得完整的歌曲信息。

代码具体实现 

  1) SwiftRadio-Settings.swift

    

    在SwiftRadio-Settings.swift文件中,作者定义了DEBUG_LOG用于判断是否需要显示调试日志。而后又定义了useLocalStatons来进行判断是否使用本地电台数据,如果useLocalStatons为false,则通过stationDataURL来获取电台信息。接着又给出  了apiKey和apiSecret两个参数以备调用前文获取歌曲信息API时使用(apiSecret并未被使用到)。

  2) stations.json

    

    这个文件为本地电台信息,通过修改可以增加或删减电台。其中name是电台名称,streamURL是电台的URL,imageURL是电台图片的URL(因为是本地电台,所以图片都已保存在项目文件中,故imageURL一项中直接给了电台图片文件对应的名称)。

  3) RadioStation.swift

    

    创建了一个RadioStation class包含了从电台JSON数据中获取的电台的个属性参数。同是设置了一个构造器及一个直接将电台JSON数据转成RadioStation实例的方法。

  4) track.swift

    

    

    创建了一个Track结构,包含了6个Track的属性。其中artworkLoaded用于记录歌曲图片是否已获取,isPlaying纪录歌曲是否已在播放。

  5) DataManager.swift

    

    

    DataManager这个类中主要包含了获取和处理网络数据或是本地数据的方法。其中getStationDataWithSuccess(success: ((metaData: NSData!) -> Void))方法通过访问SwiftRadio-Settings.swift中useLocalStations的值来判断是使用本地电台数据还是网络电台数据。getDataFromFileWithSuccess(success: ((data: NSData) -> Void))和getTrackDataWithSuccess(queryURL: String, success: ((metaData: NSData!) -> Void))分别是调用本地及网络电台数据的两个方法。loadDataFromURL(url: NSURL, completion:(data: NSData?, error: NSError?) -> Void)则是实现从网络获取电台数据的方法。通过NSURLSession来获得网络数据,而后将所得数据传给方法参数中的包含的方程以供之后的处理及使用。

  6) StationsViewController.swift

    

    

    

    

    

    

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Objective-C与JavaScript交互的那些事

    Objective-C与JavaScript交互的那些事

    2016-01-30 13:00

  • C中emoji与json的问题

    C中emoji与json的问题

    2015-10-03 14:14

网友点评
r