今天主要学习如何通过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.
}
}