Ders 8 : Diziler ve Sözlük Nesneleri

DEĞİŞTİRİLEBİLİR ve SABİT DİZİLER

Objective C’de dizi nesneleri değiştirilebilir (mutable) ve sabit (immutable) türde olmak üzere iki çeşittir. Sabit dizi nesneleri, NSArray sınıfı kullanılarak oluşturulur. Değiştirilebilir dizi nesneleri ise NSMutableArray sınıfı yardımı ile oluşturulur. Değiştirilebilir dizi nesnelerinde ilk değer atandıktan sonra değişiklik yapılabilir; sabit dizi nesnelerinde ise ilk değer atamasından sonra bir daha değişiklik yapılamaz.

Bir Dizi Nesnesi Oluşturmak

arrayWithObjects metodu NSArray sınıfının bir metodudur. Bu metot yeni bir dizi oluşturmak ve ona ilk değer(ler)i atamak için kullanılır:
NSArray *gunler;

gunler= [NSArray arrayWithObjects: @"pzt", @"sali", @"çarş", @"pers", nil];
Yukarıdaki kod ile gunler adlı sabit bir dizi, dört eleman ile (pzt, sali, çarş, pers) oluşturuldu. Dizi sonunu belirlemek için nil sabiti kullanılır. Günler dizisi elemanları program içinde daha sonraki bir adımda değiştirilemez.
Değiştirilebilir dizi oluşturmak için ise NSMutableArray sınıfı kullanılmalıdır:

NSMutableArray *gunler;

gunler= [NSMutableArray arrayWithObjects: @"pzt", @"sali", @"çarş", @"pers", nil];

Dizideki Eleman Sayısını Bulmak

Bir dizideki nesne sayısı NSArray sınıfına ait count metodu ile belirlenebilir:
gunler= [NSArray arrayWithObjects: @"pzt", @"sali", @"çarş", @"pers", nil];

NSLog (@"DIZIDEKI ELEMAN SAYISI = %i", [gunler count]);
Program çalıştırılırsa aşağıdaki çıktı elde edilir:
DIZIDEKI ELEMAN SAYISI = 4

Bir Dizi Nesnesinin Elemanlarına Erişme

Dizinin elemanlarına, ilk eleman 0. olmak üzere, birer değer atayarak erişilir. Objective-C’de bu işlem NSArraysınıfının objectAtIndex metodu ile gerçekleştirilir:
NSArray *gunler;
int i;
int count;
gunler = [NSArray arrayWithObjects: @"pzt", @"sali", @"çarş", @"pers", nil];
count = [gunler count];
for (i = 0; i < count; i++)
        NSLog (@"DIZI ELEMANI   %i = %@", i, [gunler objectAtIndex: i]);
Yukarıdaki kod çalıştırılınca aşağıdaki sonuç elde edilir:
DIZI ELEMANI 0 =pzt
DIZI ELEMANI 1 =sali
DIZI ELEMANI 2 =çarş
DIZI ELEMANI 3 =pers

Dizi Elemanlarına Hızlı Numaralama (Fast Enumeration) Yöntemi ile Erişmek

Dizi elemanlarına erişmek için daha kolay ve hızlı bir yöntem, bir yardımcı değişken kullanılarak döngü içine erişim sağlanmasıdır:
NSArray *gunler;
NSString *gun;

gunler = [NSArray arrayWithObjects:@"pzt", @"sali", @"çarş", @"pers", nil];
count = [gunler count];
for (gun in gunler)
   NSLog (@"DIZI ELEMANI = %@", gun);
Burada gun adlı yardımcı değişken bir döngü içinde kullanılarak hızlı erişim sağlanmaktadır.

Dizi Nesnesine Eleman Eklemek

NSMutableArray sınıfının addObject metodu ile mevcut bir dizi nesnesine yeni elemanlar eklenebilir:
NSMutableArray *gunler;

gunler= [NSMutableArray arrayWithObjects: @"pzt", @"sali", @"çarş", @"pers", nil];
count = [gunler count];

[gunler addObject: @"cuma"];
[gunler addObject: @"cmt"];

Dizi Nesnesinde Araya Eleman Ekleme

Yukarıda belirtilen addObject metodu dizide en sondan itibaren ekleme yapar. Oysa bazı durumlarda araya eleman eklemek de gerekebilir. Bu amaçla da insertObject metodunu kullanabiliriz:
NSMutableArray *kisiler;

int i;
int count;

kisiler = [NSMutableArray arrayWithObjects: @"ali", @"hasan", @"veli", @"fatma", nil];

[kisiler insertObject: @"cenk" atIndex: 1];
[kisiler insertObject: @"sermin" atIndex: 3];
count = [kisiler count]; 
for (i = 0; i < count; i++)
        NSLog (@"DIZI ELEMANI  %i = %@", i, [kisiler objectAtIndex: i]);

Yukarıdaki kod çalıştırılınca aşağıdaki çıktı elde edilir:
DIZI ELEMANI 0 = ali
DIZI ELEMANI  1 = cenk
DIZI ELEMANI  2 = hasan
DIZI ELEMANI  3 = sermin
DIZI ELEMANI 4 = veli
DIZI ELEMANI 5 = fatma


Dizi Nesnesinin Bazı Elemanlarını Silme


NSMutableArray sınıfı, dizi nesnesi içinden bir ya da bir grup elemanı silme olanağı sağlayan metotlara sahiptir. Aşağıda bunlardan bazılarını kullanan örnek kodlar yer alıyor. Bu metotların tam bir listesi  Foundation Framework ile ilgili belgelerde bulunabilir:

Belirli bir konumdaki elemanı silmek için removeObjectAtIndex metodunu kullanabiliriz:
gunler= [NSMutableArray arrayWithObjects: @"pzt", @"sali", @"çarş", @"pers", nil];

[gunler removeObjectAtIndex: 1];

Belirli bir nesnesinin dizi içinde ilk karşılaşılanını silmek için aşağıdaki kodu kullanırız:
gunler= [NSMutableArray arrayWithObjects: @"pzt", @"sali", @"çarş", @"pers", nil];

[gunler removeObject: @"sali"];

Belirli bir nesnesinin dizi içindeki bütün tekrarlarını silmek için aşağıdaki kodu removeObjectIdenticalTo:metodunu şu şekilde kullanabiliriz:
kisiler = [NSMutableArray arrayWithObjects: @"ali", @"hasan", @"veli", @"fatma", @"fatma",nil];

[kisiler removeObjectIdenticalTo: @"fatma"];

Bir dizinin bütün elemanlarını silmek için de removeAllObjects: metodunu kullanabiliriz:
kisiler = [NSMutableArray arrayWithObjects: @"ali", @"hasan", @"veli", @"fatma", @"fatma",nil];

[kisiler removeAllObjects];

Sadece dizideki son elemanı silmek için ise removeLastObject metodunu kullanırız:
kisiler = [NSMutableArray arrayWithObjects: @"ali", @"hasan", @"veli", @"fatma", @"fatma",nil];

[kisiler removeLastObject];

Dizi Nesnelerini Sıralama

Foundation Framework içindeki NSArray sınıfı ve alt sınıfları, dizi nesnesi içindeki elemanları çeşitli biçimlerde sıralama olanağı sunar. Sıralamayı gerçekleştirmek için en basit yol sortedArrayUsingSelector metodudur:
kisiler = [NSMutableArray arrayWithObjects: @"ali", @"hasan", @"veli", @"fatma", @"fatma",nil];

NSArray *siraliKisiler; 
siraliKisiler = [kisiler sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]

Hiç yorum yok :

Yorum Gönder