İçeriğe geç

Swift #3 – array & dictionary & set

Array

Array yani diziler içerisinde aynı veya farklı türlerde verileri depolaya bilen yapılardır. Aşağıda bazı dizi tanımlama tiplerini görebiliriz. Örneklerde olduğu gibi dizi tanımlarken köşeli parantezler içerisinde elemanlarımızı yazabiliriz. Boş bir dizi oluşturmak istiyorsak dizi tipini belirtmemiz gerekmektedir.

var data : [String] = [] 

var days = [1, 4, 2, 6] 

var numbers : [Int] = [1, 1, 1, 1] 

var names : Array<String> = ["bahri", "ali", "cevdet"] 

var anyArray : [Any] = [0, "bahri", false] 

Otomatik değer ataması yaparak bir dizi oluşturmak için aşağıdaki yapıyı deneyebilirsiniz.

var digitCounts = Array(repeating: 0, count: 10) 
//[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Dizilerin Bazı Propertyleri

var numbers : [Int] = [13, 1, 3, 1] 

numbers.isEmpty // true|false 

numbers.count // dizi eleman sayısı 

numbers.first //ilk eleman 

numbers.last //son eleman 

numbers.append(4) //bir eleman ekleme 

numbers.append(contentsOf: [1, 4]) //toplu eleman ekleme 

numbers.insert(4, at: 3) //belirli bir indexe eleman ekleme 

numbers.remove(at: 3) //index numarasını kullanarak eleman silme 

numbers.removeLast() //son elemanı silme 

numbers.removeFirst() //ilk elemanı silme 

numbers.firstIndex(of: 5) //bir elemanın dizi içerisindeki index numarasını alma 

Diziler içerisindeki tüm elemanları listelemek için for loop kullanabiliriz.

for number in numbers {
    print(number)
}

Dictionary

Dictionary içerisine key ve value tanımlayabildiğimiz birden fazla boyutlanabilen collection type’lerinden bir tanesidir. Aşağıda bazı dictionary tanımlama tiplerini görebiliriz. Dizilerde olduğu gibi boş bir dictionary oluşturmak için veri tiplerini belirtmemiz gerekmektedir. Dictionary’de key value mantığı vardır. Value’ler istediğimiz veri tipinde olabilirken key’ler any tipinde olamazlar. Any yerine swift içerisinde AnyHashable denilen bir yapı ile kullanılabilirler.

var user = 
[
"A": "Bahri", 
"C": "Cevdet", 
"H": "Halil"
]

var data : [Int:String] =
[
30: "30 karakter",
40: "40 karakter",
50: "50 karakter"
]

var emptyDict: [String: String] = [:]

var anyEmptyDict: [Int: Any] = [:]

Dictionary içerisindeki tüm verileri listelemek için for loop kullanılabilir.

var user = 
[
"A": "Bahri", 
"C": "Cevdet", 
"H": "Halil"
]

//Tüm elemanları listelemek
for (key, value) in user {
    print("Key: \(key) Value: \(value)")
}

Dictionary içerisinde bulunan herhangi veriyi almak için köşeli parantezler içinde almak istediğimiz verinin anahtar kelimesini yazmalıyız.

var user = 
[
"A": "Bahri", 
"C": "Cevdet", 
"H": "Halil"
]

print(user["A"])

Yukarıdaki kodu çalıştırdığımızda uygulamamız bize Optional(“Bahri”) şeklinde çıktımızı verecektir. Tabii ki bu durumda bu veriyi optional yapıdan kurtarmak için çeşitli yöntemler mevcut. Bunların bir kaç tanesini örnek olarak vereceğim. Fakat optional hakkında daha detaylı bilgiye bir önceki yazımda ulaşabilirsiniz.

//1. Yöntem
print(user["A"]!) //Bu durumda optional halden kurtarabiliriz fakat eğer o değer yoksa uygulamamızın çökmesine neden olacaktır.

//2. yöntem
if let name = user["A"] {
    print(name)
}

Set

Set içerisine aynı tür elemanlar barındırabilen collection type’lerimizden birisidir. Set dizilerden ayıran 2 temel özellik vardır. Bunlardan birincisi Set’ler içerisinde aynı değerde eleman olamaz. Yani Int bir Set içerisinde 5 elemanı varken ikinci bir 5 elemanı barındıramayız. Bunun yanı sıra Set’ler içerisindeki veriler sıralı değildir. Bu yüzden dizilerde olduğu gibi indis numarasını belirterek eleman çağıramayız. Tabii ki biz manuel olarak sıralama yapabiliriz.  Aşağıda bazı set tanımlama tiplerini görebiliriz.

var numbers : Set<Int> = []

var numbers : Set = [1,22,3,34,5] 

Set tanımlarken array veya dictionary’de olduğu gibi veri tiplerini vermek zorunda değiliz. Fakat set’in tanımlama mantığı array ile aynı olduğu için set tanımlarken : Set şeklinde bunu belirtmemiz gerekmektedir. Yada Aşağıda bulunan örnekte olduğu gibi set tipinden initialize etmemiz gerekir.

var numbers  = Set([1,22,3,34,5])

Set’in bazı propery’leri

var numbers : Set<Int> = [1,22,3,34,5] 

numbers.insert(55) //yeni bir eleman ekler

numbers.remove(55) //var olan elemanı siler

numbers.contains(1)  //eleman set içerisinde var mı kontrolü

numbers.isEmpty // true|false 

numbers.reduce(0, +) //sets içerisindeki değerlerin toplamını döndürür. 

Set içerisindeki verileri sıralayarak bir diziye dönüştürmek için aşağıdaki yapıyı kullanılabiliriz.

let numberStringArray = numbers.sorted().map(String.init)

Set içerisinde bulunan verilerin başka bir dizi ile kesişen verilerini bulmak için aşağıdaki yapıyı kullanabiliriz.

print(numbers.intersection(day)) //[3, 5]

Set içerisinde bulunan verilerin tamamı belirttiğimiz dizi içerisindeki elemanlar ile kesişiyor mu kontrolü yapmak için aşağıdaki yapıyı kullanabiliriz.

print(numbers.isSubset(of: day)) //false

Set ile farklı bir diziyi birleştirmek için aşağıdaki yapıyı kullanabiliriz. Bu yapı bize iki kümenin elemanlarını birleştirerek yeni bir Set sunar. Burada bilinmesi gereken tek şey birleştirecek iki küme içerisinde aynı elemanlar varsa bile set’in kuralları gereği aynı elemanlar olmayacağı için yeni oluşan kümeye bir adet eklenecektir.

print(numbers.union(day))

Kategori:IOS Developer YolculuğuSwift

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.