Swift Array Kullanımı

Merhaba arkadaşlar ,
mobilhanem.com sitemiz için anlattığımız/yayınladığımız Swift Dersleri serimize bu yazımızda Swift Dizi ile devam edeceğiz. Bir önceki yazımızda Swift Continue ve Break konusundan bahsetmiştik. Bu derse başlamadan önce xcode’u kurmak ve playground  üzerinde swift kodu yazabilmek için bu dersimizi okumanızı tavsiye ederim.

Swift Dizi Nedir ?

Diziler bir başka deyişle array , aynı türdeki verileri saklamaya yarayan değişkenlerimizdir. Dikkat çekmek istediğim nokta aynı türdeki verileri bir arada saklayabiliriz. Yani dizimizin içerisinde hem float hem string bir değer saklayamayız. Dizimiz tek bir tipte olmalıdır. Örneğin dizimizin bütün elemanları string olmalıdır.

Swift Array Çalışma Mantığı

Array ‘lerin içerisindeki bütün değerlerin bir indexi yani bir sırası vardır .

swift array

Şekildeki dizimizde toplam 5 adet eleman bulunmaktadır. Dizilerimizin index ‘i 0 ‘dan başlar. Toplam 5 adet elemanımız var ise bunun bir eksiği bizim maksimum index değerimizdir. Kısaca eleman sayısı – 1 = maksimum index diyebiliriz. 🙂

Dizimizin 0. index ‘inde “Herkese” elemanı vardır ve string türündedir. 1. index ‘imizde ise “Merhaba” elemanımız vardır ve o da string türündedir. Bu dizi string olmayan bir eleman barındıramaz. Elemanlarımıza erişirken index ‘lerini kullanarak erişeceğiz. Diziler ‘de değerlerimiz sıralı olarak tutulmaktadır. Peki sıralı derken neyi kastediyorum ? Dizimize ilk eklediğimiz eleman her zaman ilk eleman olarak kalacaktır. İlk eklediğimiz elemanın indeki her zaman 0 olacak ve ardından eklediğimiz değerimiz ise 1 fazlasını alarak 1 numaralı index değerine sahip olacaktır.

Swift Boş Array Tanımlama

Evet şimdi ilk olarak boş yani içerisinde hiç bir eleman olamayan bir dizi tanımlayalım.

Yukarıdaki gibi iki farklı şekilde dizinin türünü belirtip boş bir dizi yaratabiliriz. String türündeki dizimizin adı stringDizi , integer türündeki dizimizin ismide intDizi dir. İki farklı tanımlamadan istediğinizi seçebilirsiniz.

Swift Array Eleman Ekleme

Evet yukarıda boş dizimizi yarattık fakat içinde hiç elemanımız yok . Şimdide dizimize yukarıdaki resimde bulunan elemanlarımızı ekleyelim .

Bütün elemanlarımızı tek bir satır kullanarakta aşağıdaki gibi ekleyebiliriz .

Swift Diziyi Tek Bir Elaman İle Doldurmak

Şahsen çok olarak kullanmadığım bir özellik olsada fazla bilgi göz çıkarmaz diyerek paylaşmak istedim. Dizimizi belirlediğimiz bir eleman ile belirli bir sayı vererek istediğimiz isimde bir diziyi aşağıdaki şekilde oluşturabiliyoruz.

selamlama isimli array ‘imize repeating keyword ‘ü ile eklemek istediğimiz elemanımızı yazıyoruz ardından count keyword ‘ü ile kaç adet eleman oluşturmak istiyorsak sayımızı giriyoruz ve ardından selamlama dizimiz oluşturulmuş oluyor. selamlama dizimizin içerisinde 3 adet “selam” değeri bulunmaktadır ilkinin index ‘i 0, ikincisinin 1, sonuncusunun ise 2 dir.

Swift Diziye İlk Değer Ataması Yaparak Oluşturma

Diğer değişkenlerde yaptığımız gibi dizimizi oluştururkende dizimizin içerisine eleman ekleyebiliriz. Eklediğimiz bu değerler oluşturduğumuz dizinin türünüde belirlemektedir.

Evet isimler adında string türünde bir dizimizin olacağını ve bu dizinin elemanlarının sırasıyla “Taha” ve “Rüya” olacağını yukarıdaki gibi ilk değer ataması yaparak belirttik. Şimdi de dizimizin türünü belirtmeden ilk değer ataması yaparak dizimizi oluşturalım,

Yukarıdaki gibide dizimizin türünü biz string olacağını belirtmedik fakat ilk değer ataması yaptığımız değerler string türünde oldukları için derleyicimiz dizimizin türünü string olarak belirledi.

Swift Dizi ‘nin Boş Olup Olmadığını Kontrol Etme

Evet elimizde bulunan bir dizinin boş olup olmadığını nasıl kontrol edebiliriz ? Cevap çok basit dizimizin ismini yazdıktan sonra isEmpty keyword ‘ü ile kontrol edebiliriz. Bu işlem bize true ya da false değerini döndürür. Peki biz bu true ve false değerlerini if yapısında koşul olarak verirsek daha güzel bir şekilde ele almış oluruz.

isimler dizimizin boş olmadığını biliyoruz. isimler. isEmpty bize false değerini döndürür . Peki biz bunları nasıl yorumlayabiliriz ? İlk olarak sorumuzu bulalım , sorumuz (isimler.isEmpty) isimler dizimiz boş mu ? sorumuzu bulduktan sonra bize gelen cevabı yorumlayabiliriz. Cevap olarakta false gelmektedir bu kelimenin karşılığı “yanlış” olsada biz bunu “hayır değil” olarak olumsuz bir şekilde algılayabiliriz.

+ isimler dizimiz boş mu ?

– hayır.(Yani değil)

Şeklinde düşünebiliriz.

Swift Dizi ‘nin İlk Elemanına Erişme

Dizilerimizi artık kolayca oluşturabilmekteyiz. Şimdide bir adım daha giderek dizimizin ilk elemanına nasıl erişebileceğimizi öğrenelim. Bu işlem sandığınızdan çok daha basit. Yukarıda bahsettiğimiz gibi dizimizin ilk elemanının index değeri 0 dır. Bu bilgiyi kullanarak isimler dizimizin ilk elemanını bulup ekrana yazdıralım.

Şeklinde isimler dizimizin ilk elemanına erişip ekrana bastırabilmekteyiz. Bu işlemin dışında bir başka şekildede ilk elemanına erişebilmekteyiz,

Yukarıdaki gibide dizimizin ilk elemanına first (ilk) keyword ‘ünü kullanarak erişebilmekteyiz. Bu şekilde ilk elemana eriştiğimizde ve ekrana yazdırdığımızda “Optional(“Taha”)” şeklinde bir çıktı görmeniz lazım. Buradaki Optional yazısına şimdilik takılmayın ilerleyen derslerde bunun ne olduğunu nasıl düzeltilebileceğini detaylı olarak anlatacağım.

Swift Dizi ‘nin Son Elemanına Erişme

Dizinin son elemanına eğer index değerini biliyorsak yukarıda yaptığımız gibi isimler.[index değeri] notasyonu ile erişebiliriz. Fakat bilmiyorsak nasıl erişebiliriz ?

first keyword ‘unusual kullandığımız gibi last (son) keyword ‘ünüde kullanarak dizimizin son elemanına erişebilmekteyiz. Derleyicimiz yine first keyword ‘ünü kullandığımızdaki gibi bize uyarı vermektedir yine bu uyarıyı görmezden gelip devam edebilirsiniz ilerleyen derslerimizde bu durumu uzun uzun anlatacağım.

Swift Dizi ‘nin Bütün Elemanlarını Yazdırma

Dizimizin bütün elemanlarını ekrana bastırmak için ,

Şeklinde dizimizin içerisinde hangi elemanlarının bulunduğunu görebiliriz. Fakat elemanları bir arada göstermektedir. Elemanlarımızı ayrı ayrı görebilmemiz için for döngüsü kullanabiliriz.

Yukarıdaki gibi range olarak 0 ve 3 değerlerini verdiğimizde dizimizin bütün elemanlarını ayrı ayrı görebilmekteyiz. Biz bu range ‘i dizimizin 2 elemandan oluştuğunu bildiğimiz için verebildik eğer bilmeseydik ne yapmalıydık dediğinizi zannediyorum okumaya devam edin 🙂

Dizimizin bütün elemanlarına erişmek için aşağıdaki gibi bir for döngüsü kurabiliriz,

İlk kurduğumuz for döngüsüne göre daha zahmetsiz ve daha az kod yazarak daha uygun bir şekilde elemanlarımıza eriştik. Peki nasıl yaptık ? isimler dizimizin üzerinde gezineceğimiz için in keyword ‘ünden sonra isimler yazdık ve isimler dizimizin her bir elemanına deger ismini verdik ve for döngümüz her döndüğünde deger değişkenimizi bastırdık böylece bütün elemanlarımıza erişebildik. deger değişkenimiz ilk olarak isimler dizisinin 0. index ‘inde bulunan değeri alacak ve ardından 1. index ‘teki değeri alacaktır ve isimler dizisinin bütün elemanları bitene kadar bu işlemi tekrar edecektir.

Swift Dizi ‘nin Eleman Sayısını Bulma

Her zaman dizilerimizin eleman sayısını bilmemiz neredeyse imkansızdır elbette dizimizin içindeki elemanları ve sayısını bilemediğimiz zamanlar olacaktır. Dizimizin eleman sayısını bilsek bile range olarak sabit bir sayı vermek yazdığımız kodun kalitesini düşürür . Her kod sonradan değişebileceği için elimizden geldiğince sabit sayılar vermekten uzak durmalıyız. Dizimizin içindeki eleman sayısıda haliyle yarın değişebilir.Peki bu sorunu nasıl çözebiliriz ? İşte cevabı ,

Gayet basit değil mi 🙂 count keyword ‘ünü kullanarak isimler dizimizin eleman sayısını çok rahat bir şekilde öğrenebildik. Peki neden yukarıda range olarak 0…1 verirken şimdi 0..<isimler.count dedik ?

0…1 Derken döngümüz 4 kere çalışıp 0 ve 1 değerlerini almıştı.

0..<isimler.count dememizin sebebi ise isimler.count bize isimler dizimizin eleman sayısını verecek ve bu değerde 4 olacaktır , 4 değerinin dahil olmaması içindir.

Swift Dizi ‘nin Elemanının İndex ‘ini Kullanarak Değerini Değiştirme

Dizilerimiz içerisindeki elemanların değerlerini index değerini vererek kolaylıkla değiştirebiliriz. Bu basit bir atama işlemidir.

soyadlar dizimizin index ‘i 1 olan elemanımızın değerini “Buyruk” olarak değiştirdik. Önceki değeri “Cındık” iken bu işlemden sonraki değeri ise “Buyruk” olmuştur. Bu şekilde istediğimiz elemanın değerini kolaylıkla değiştirebiliriz.

Swift Dizi ‘nin Belirli Bir Aralığını Bulma

Dizilerimizin içerisinde belirli bir range arasındaki değerleri bulmak için range ‘imizi vererek kolaylıkla bulabiliriz ,

Yukarıda yaptığımız işlemlerden tek farkı index yerine range vermemizdir. Range ‘imiz 1 ve 2 değerlerini alacaktır. Ve bu index ‘lere karşılık gelen elemanı ekrana bastıracaktır. Bu şekilde belirli bir aralıktaki değerleri bulabildiğimiz gibi bu değerleri indexleri kullanarak değerini değiştirdiğimiz şekilde istediğimiz elemanla (aynı türdeki olması şartı ile) değiştirebiliriz.

Swift Dizi ‘nin İstenilen İndex ‘ine Eleman Ekleme

Dizilere eleman eklerken her zaman sonuna eklenebilir diye bir kural yoktur istediğiniz elemanı tabi ki aynı türde olması zorunluluğu ile istediğimiz index ‘e ekleyebiliriz.

0. index ‘e “Sinan” değerini atadık peki diğer elemanlarımıza ne oldu ? 0. index ‘teki değerimiz hala duruyor mu ?

Aşağıdaki şekilde yapılan işlem açıkça anlatılmıştır 🙂

Swift İnsert Açıklama

Swift Dizi ‘nin Belirli Bir İndex ‘inde ki Elemanı Silme

Dizimizin içerisindeki istediğimiz bir elemanı diziden çıkartmak için index değerini vererek yapabiliriz.

Remove kelimesinin karşılıklarından biride “çıkarmak” tır. Ve remove dedikten sonra hangi index ‘teki elemanı çıkarmak / silmek istiyorsak o elemanın index değerini yazarak işlemi gerçekleştirebiliriz. Bu işlemi gerçekleştirmeden önce dizimizin içerisindeki elemanlar ,

["Sinan”, "Taha”, "Rüya”, "Alex”, "Gheorghe”] iken bu işlemden sonra

[“Taha["Taha”, "Rüya”, "Alex”, "Gheorghe”]aktır. İndex olarak 0 verdiğimiz için ilk elemanı yani “Sinan” değerini çıkartacaktır.

Swift Dizi ‘nin İlk Elamanını Silme

Yukarıda anlattığım gibi index değerine 0 vererek bu işlemi gerçekleştirebiliriz. Peki neden ayrı bir başlık altında bunu yazıyorum ? Yazıyı takip etmeye devam edin sonlara doğru sebebini açıklayacağım.

İlk elemanı çıkaracağımız zaman 0 index ‘ini verebileceğimiz gibi ,

 

Kaynak: https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-ID309

Taha Eren Buyruk

Başkent Üniversitesi Bilgisayar Mühendisliği.

2 Yorum