格式数据的第三方库。由于Swift语言设计的原因,在使用Swift语言获取JSON格式数据的内容时,需要手动的将AnyObject进行转型拆包等一系列繁复的操作。同时在这过程中,稍有不慎,很容易引起程序的崩溃。基于此,SwiftyJSON提供了一套简介的处理JSON格式数据的方法,并且不用担心因为在对JSON数据上处理的疏忽导致的数组越界,程序崩溃的情况发生。
Github:https://github.com/SwiftyJSON/SwiftyJSON
这是一个简单的调用JSON(data:)方法的例子。可以看到,仅需一步,就可以获取到想要的数据。这不但提升了代码编写的效率,也省去了在阅读代码时看到那一串串令人头疼不已的拆包步骤。
通过与Alamofire JSON response handler的配合使用,更是极大的简化了在处理网络返回JSON格式数据时的复杂过程。
4、View
Views文件夹中包含了7个文件,其中5个是TableViewController包含了大量对表格的设定处理和填充,这与之前在两个APP中的处理大同小异,在此,就不详细的展开讲述了。楼主将会拿出几处不同之处进行一下简单的分析。
这5个TableViewContorller的数据源都是通过DataCenter.shareDataCenter获取DataCenter实例再调用相应方法得到的。通过这个方法,避免了在类中大量定义变量及将数据反复传递。
在willDisplayCell方法中加入cell.layer.transform属性设定及调用UIView.animateWithDuration()方法从而达到cell显示时出现动画效果。
通过调用第三方库MJRefresh中的API是列表具有上下拉刷新的功能。MJRefresh是一款用于实现上下拉自动刷的第三方库。通过调用API能很轻易的实现想要的刷新功能。
Github:https://github.com/CoderMJLee/MJRefresh
Github上有着非常详细的调用例子。
Views中除了TableViewController还定义了一个RoundImageView类生成用于显示歌曲图片的圆形UIImage。通过设置图片圆角,将圆角半径设为正方形图片边长的1/2,从而使原本是正方形的UIImage显示成圆形。并定义了一个rotation()方法,用于使图片旋转起来。
最后,ViewControllere.swift中主要实现了歌曲播放,切歌,下载歌曲,收藏歌曲,更新数据库,锁屏显示及事件响应,显示歌词等一系列的功能。虽然代码比较长且有些杂乱,但是功能实现原理都较为简单,在此不做详细介绍了。主要想讲一下这里使用的三个第三方库:Async,LTMorphingLabel与Kingfisher。
Async是一个处理对线程问题的第三方库。通过调用Async可以较为方便的处理线程问题
GitHub:https://github.com/duemunk/Async
通过这个例子可以发现,使用Async库后,同样的执行一个后台操作及主线程操作的代码变得简洁许多。
LTMorphingLabel是一个实现Label显示动画效果的第三方库。使用时,直接将UILabel()实例为LTMorphingLabel(),之后就可以调用LTMorphingLabel类中所提供的各种动画效果了。
Github:https://github.com/lexrus/LTMorphingLabel
Kingfisher是一个使用异步下载装载及缓存图片的第三方库。所有的下载都是异步进行的,不会卡UI,下载完的同时不但提供了内存缓存,同时也提供了本地磁盘的备份。
Github:https://github.com/onevcat/Kingfisher
三、聊聊第三方库
在分析程序部分时,聊到了这款APP所用到的所有第三方库,并给予了简单的介绍。在此再做一下汇总
FMDB:https://github.com/ccgus/fmdb
Alamofire:https://github.com/Alamofire/Alamofire
SwiftyJSON:https://github.com/SwiftyJSON/SwiftyJSON
MJRefresh:https://github.com/CoderMJLee/MJRefresh
Async:https://github.com/duemunk/Async
LTMorphingLabel:https://github.com/lexrus/LTMorphingLabel
Kingfisher:https://github.com/onevcat/Kingfisher
现在想要聊一下如何在项目中引入这些库。
现如今,一般在Swift项目中都是通过CocoaPods和Carthage这两个工具来引用和管理第三方库。接着就来简单的说一下这两个工具及其使用方法。
1、CocoaPods
CocoaPods可以说是目前最为流行的ISO/MAC第三方库管理工具。最新版本是0.39。用户可以通过编写Podfile并执行,便可非常便捷的从Github上获取自己想要使用的第三方库并将其整合进自己的项目中。
官方网站:https://cocoapods.org
安装CocoaPods:
在终端中输入上图代码便可自动完成CocoaPods安装。
完成安装后就是该介绍下如何使用这款非常好用的工具了
首先是在项目目录下创建一个Podfile文件。将项目所需要的第三方库如上图格式写入Podfile。
接着使用终端进入项目目录运行命令pod install,稍等片刻后,屏幕会提示安装成功。
之后打开项目就用新生成的.xcworkspace文件就可以了。
CocoaPods的优势:
使用极其方便,除了需要编写Podfile外,其余操作都是自动完成的。
支持第三方库数量众多。
2、Carthage
相比于CocoaPods,Carthage的最大优势就是去中心化。在用Carthage调用第三方库时不会额外创建一个.xcworkspace,这也就意味着用户可以自由的控制如何将第三方库装入自己的项目中。
Github:https://github.com/Carthage/Carthage
安装Carthage:
在https://github.com/Carthage/Carthage/releases中下载Carthage.pkg并安装。
如何使用Carthage可以参考http://devtian.me/2015/08/11/translate-carthage-readme/这篇博文是Carthage使用说明的译文。
四、项目IOS部分可改进部分
项目在数据模型设计高效,布局合理,但是还是存在了如ViewController.swift这样将许多功能及方法整合于一身的巨大类。这不仅增加了代码的阅读难度,同时也加大了程序在更新及维护过程中困难程度。
五、总结
&