今天主要学习如何通过swift加载plist文件:
let path = NSBundle.mainBundle().pathForResource("pic", ofType: "plist")!; var picArray = NSArray(contentsOfFile:path);
第一句:获得名称为"pic.plist"的文件的路径path
第二句:通过路径path创建数组,并且将文件内容加载到数组中。当然也可以是加载到字典中,NSDictionary(contentsOfFile:path);
下面以一个图片浏览器的实例说明:
效果:
pic.plist文件:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <array> <dict> <key>icon</key> <string>image01</string> <key>title</key> <string>这是图片01</string> </dict> <dict> <key>icon</key> <string>image02</string> <key>title</key> <string>这是图片02</string> </dict> <dict> <key>icon</key> <string>image03</string> <key>title</key> <string>这是图片03</string> </dict> <dict> <key>icon</key> <string>image04</string> <key>title</key> <string>这是图片04</string> </dict> <dict> <key>icon</key> <string>image05</string> <key>title</key> <string>这是图片05</string> </dict> <dict> <key>icon</key> <string>image06</string> <key>title</key> <string>这是图片06</string> </dict> </array> </plist>
swift控制器代码:
import UIKit class ViewController: UIViewController { @IBOutlet weak var picIv: UIImageView!; @IBOutlet weak var pageNumLbl: UILabel!; @IBOutlet weak var titleLbl: UILabel! @IBOutlet weak var lastBtn: UIButton!; @IBOutlet weak var nextBtn: UIButton!; var picArray:NSArray?; var index = 0; //上一张 @IBAction func last() { index--; if(index < 0){ index = 0; } showThePic(index); } //下一张 @IBAction func next() { index++; if(index >= picArray!.count){ index = picArray!.count - 1; } showThePic(index); } //显示某张 func showThePic(i:Int){ var dic = picArray![i] as! (Dictionary<String, String>); pageNumLbl.text = "\(i+1)/\(picArray!.count)"; picIv.image = UIImage(named:dic["icon"]!); titleLbl.text = dic["title"]!; lastBtn.enabled = index != 0; nextBtn.enabled = index != picArray!.count - 1; } //将plist文件加载到数组中 func loadPics(){ let path = NSBundle.mainBundle().pathForResource("pic", ofType: "plist")!; picArray = NSArray(contentsOfFile:path); } override func viewDidLoad() { super.viewDidLoad() loadPics(); showThePic(0); } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }