iOS – Swift Dersleri (Property List Kullanımı (Plist))

Merhaba Arkadaşlar,
Bu paylaşımımızda plist nedir, ne zaman kullanılır gibi sorulara cevap ararken, Swift’te plist kullanımının ne şekilde olduğunu anlamaya çalışacağız.

Plist, (property list) anahtar kelime – değer ilişkisi barındıran (key-value), Xcode projelerinde kullanılan ve runtime konfigürasyon bilgilerini barındıran özel bir liste yapısıdır. Bu listenin elemanları dictionary, dizi (array) ve diğer tüm skaler tipler (string, number, date, boolean, data) olabilir ve belirli bir hiyerarşik yapıda bulunurlar.

Örneğin; yazmış olduğumuz bir ios uygulaması için, uygulama açıldığında birtakım konfigürasyonel ayarlar yapmamız gerekiyor; arkaplan resmi, uygulamanın açıldığı telefon modeline göre farklılık gösterecek ayarlar, resim boyutları, yazi boyutlar vs. Bu tür durumlarda bir plist oluşturabilir, uygulama açılırken (örneğin viewDidLoad fonksiyonu içinde) bilgileri plist’ten okuyabilir, uygulama yüklenirken gerekli ayarları yapabiliriz.

Plist oluşturma

Projemize sağ tıklayarak New File‘ı tıklıyoruz. Açılan ekranda ios->resource altında Property List‘i seçiyoruz. İsmini yazarak plist’imizi yaratıyoruz.

plist1

Oluşturduğumuz plist’imize bilgi eklemeye başlayabiliriz. Default olarak Root isminde ve Dictionary tipinde bir satır gelecektir. Biz değerlerimizi Root’un altına ekleyeceğiz. Root satırındaki (+) artı butonunu kullanarak bir satır ekliyoruz, listemizde oluşturduğumuz değişkenin tipini ve değerini ayarlıyoruz. Aşağıdaki örnekte String tipinde siteAdi ve siteLinki isminde iki tane satır ekledik ve değerlerini mobilhanem ve http://www.mobilhanem.com olarak ayarladık.

plist2

Plist’ten Data Okuma

Plist’ten aşağıda görüldüğü gibi data okuyabiliriz:

//Listemizin tüm elemanlarini dictionary değişkenine aliyoruz.
let dictionary = NSDictionary(contentsOfFile: NSBundle.mainBundle().pathForResource("Config", ofType: "plist"))

//Anahtar değeri (key) kullanarak ilgili değere ulaşıyoruz.
var ad: AnyObject = dictionary.objectForKey("siteAdi")
var link: AnyObject = dictionary.objectForKey("siteLinki")

println("Site Adı: \(ad)");
println("Site Linki: \(link)");

/*---Çıktı----
Site Adı: mobilhanem
Site Linki: http://www.mobilhanem.com
*/

Daha alt seviyelere data yazabilir ve okuyabiliriz. Aşağıdaki örnekte göre geometrik şekiller ile ilgili bir plist’imiz olsun. Bu plist’te 1. seviyede sekil, kenarUzunlugu, genislik ve uzunluk değerleri ile birlikte dictionary tipinde koordinat değeri bulunur. Koordinat altında bulunan x ve y değerleri ise 2. seviyedeki değerlerimizdir. 2. seviyede bulunan değerlerimize de aşağıdaki gibi ulaşabiliriz:

plist3

//Listemizin tüm elemanlarini dictionary değişkenine aliyoruz.
let dictionary = NSDictionary(contentsOfFile: NSBundle.mainBundle().pathForResource("GeometrikSekil", ofType: "plist"))

//Anahtar değeri (key) kullanarak ilgili değere ulaşıyoruz.
var sekil: AnyObject = dictionary.objectForKey("sekil")
var kenar: AnyObject = dictionary.objectForKey("kenarUzunlugu")
var genislik: AnyObject = dictionary.objectForKey("genislik")
var uzunluk: AnyObject = dictionary.objectForKey("uzunluk")

println("Sekil Adı: \(sekil)");
println("Kenar Uzunlugu: \(kenar)");
println("Genislik: \(genislik)");
println("Uzunluk: \(uzunluk)");


//2.seviye degerler
var x: AnyObject = dictionary.objectForKey("koordinat").objectForKey("x")
var y: AnyObject = dictionary.objectForKey("koordinat").objectForKey("y")

println("x koordinati: \(x)");
println("y koordinati: \(y)");

/*---Çıktı----
Sekil Adı: dikdortgen
Kenar Uzunlugu: 12
Genislik: 10
Uzunluk: 20
x koordinati: 32
y koordinati: 60
*/

Seviyesi 2’den fazla olan degerlerimiz varsa da benzer sekilde ulaşabiliriz.

Projemizde plist ile yapabildiğimiz tüm bu işleri plist kullanmadan da gayet iyi yapabiliriz. Fakat plist kullanmamız bu tür konfigürasyonel datanın yönetilmesini kolaylaştır. Ayrıca sonradan bu ayarlarda değişiklik yapmak istediğimizde kodumuza müdahale etmeden direk bu değerleri değiştirerek kolaylıkla işimizi halledebiliriz.

Bu paylaşımımızda property list‘in (plist) ne olduğunu, nasıl ve ne zaman kullanıldığını inceledik. Mobilhanem‘de swift ile ilgili paylaşımlara devam edeceğiz.

iOS – Swift Dersleri (Tuples, Optionals, Error Handling)

0

Aycan Ayhan

2 Yorum

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?