最近swift大热,为了追随潮流,最近一直在学习swift(好吧,其实是怕饭碗不保~~)。
言归正传,这遍blog主要是教大家如何让一个本地存放数组字典的plist文件转化为模型!
我们先来看plist文件的结构,如图:
在OC中,我一般是这样转化的:
用的时候直接用 appList这个数组就行了!
/** ---------------------------华丽分割线----------------------------*/
下面我们来看看在swift中我们该怎么做吧
(一). 新建个model文件 继承NSObject ,申明属性,这遍一定要切记,申明的属性名要和plist文件中元素名字一样,切记,切记,切记!!(重要的事情说三遍)
var name:String?
var icon:String?
var filename:String?
var lrcname:String?
var singer:String?
var singerIcon:String?
(二). 重写指定构造器init() , 记得要调用下 super.init() , properties 这个数组里面的元素名也要和plist文件里的元素一致
static let properties = ["name","icon","filename","lrcname","singer","singerIcon"]
init(dict:[String:AnyObject]){
super.init()
for key in Musics.properties {
if dict[key] !=nil {
setValue(dict[key], forKey: key)
}
}
}
(三).定义个类型方法 把模型放到数组里返回
class func musics() ->NSArray{
let musicDictArray = NSArray(contentsOfFile:NSBundle.mainBundle().pathForResource("Musics.plist", ofType:nil)!)
let musicModelsM =NSMutableArray(capacity: musicDictArray!.count)
for musicDict in musicDictArray! {
musicModelsM.addObject(Musics(dict: musicDictas! [String:AnyObject]))
}
return musicModelsM.copy()as!NSArray
}
(四). 最后在控制器里定一个延迟属性 返回个数组 ,这样 musicList 数组里装的就是模型了!
import UIKit
classViewController:UIViewController{
lazy var musicList:NSArray= {
returnMusics.musics()
}()
override func viewDidLoad() {
super.viewDidLoad()
for xx in musicList{
println((xxas!Musics).lrcname)
}
}
}