Mar 152013
 

Pada artikel ini saya akan terangkan antara class yang penting dan kerap digunakan untuk programming objective c iaitu

NSString, NSArray dan NSDictionary.

Pertama sekali, perlu diketahui dalam sesetengah class dalam Cocoa terbahagi kepada mutable dan non-mutable.
Contohnya, NSString dan NSMutableString, NSArray dan NSMutableArray, serta NSDictionary dan NSMutableDictionary.

Perbezaan antara mutable dan non- mutable adalah kandungan dalam mutable class boleh diubah.
Contohnya dengan menggunakan NSMutableArray anda boleh menambah atau buang objek di dalam NSMutableArray tetapi tidak dengan menggunakan NSArray.

1. String
Declare string adalah mudah sahaja seperti berikut.

NSString *aString = @"I have declared a string";

Code Explanation:
Untuk menggunakan NSString, mesti declare dengan format @””

2. Array
Untuk declare array,


//Declare array kosong
NSArray *emptyArray = [NSArray array];

//declare array that have string objects in it
NSArray *array1 = [NSArray arrayWithObjects:@"ali", @"abu", @"ahmad", nil];
//declare array that have string objects in it
NSArray *array2 = @[@"ali", @"abu", @"ahmad"];

//Access array at index 1, will return abu
NSString *aString = [array1 objectAtIndex:1];
NSString *aString2 = array1[0];

//Create mutable array
 NSMutableArray *aMutableArray = [NSMutableArray array];

//Tambah objek ke dalam aMutableArray
[aMutableArray addObject:@"ali"];
 [aMutableArray addObject:@"abu"];
 [aMutableArray addObject:@"ahmad"];

//akses string pada index pertama
 NSString *aString3 = aMutableArray[0];

//print ke output
NSLog(@"array1 = %@", array1");
NSLog(@"array1 pada index 1 = %@", aString);
NSLog(@"array2 pada index 0 = %@", aString2);
NSLog(@"aMutableArray pada index 0 = %@", aString3);

Code Explanation:
line 2: kita hanya declare array yang kosong, maksudnya tiada object di dalam array ini.
line 4: kita declare array mengandungi NSString object, kita faham adalah NSString object dengan notation @””
line 7:, ia juga adalah sama seperti line ke 4 tetapi, ia adalah cara baru untuk create array, ia lebih mudah dan pendek. Untuk akses objek dalam array, kita menggunakan format ini [array objectAtIndex:theIndex] ataupun cara baru yang lebih pendek iaitu array[theIndex] seperti line 10 dan 11.

line 13 – 16: kita declare mutable array, maksudnya ia boleh diubah. Kita tambah string kedalam array dengan menggunakan addObject:. Cuba anda guna addObject untuk NSArray class dan tentunya error kerana object dalam NSArray class tidak boleh diubah.

Satu kelebihan array dalam objective-c adalah anda boleh masukkan semua jenis class(semua class inherit daripada NSObject) ke dalam array tersebut. Boleh juga jika mahu masukkan class yang berlainan dalam satu array contohnya masukkan NSNumber pada index 0, NSDictionary pada index 1 dan sebagainya.

Anda boleh cuba masukkan code diatas dalam applicationDidFinishLaunching: pada AppDelegate.m dan lihat hasilnya.

3. Dictionary
Jika NSArray menyimpan data secara berturutan, NSDictioanary pula menyimpan data secara key dan value. Berikut adalah contoh menggunakan NSDictionary


//Create dictionary dengan key name, age, phone
NSArray *objects = @[@"ali", @"16", @"0147763269"];
NSArray *keys = @[@"name", @"age", @"phone"];
NSDictionary *person = [NSDictionary dictionaryWithObjects:objects forKeys:keys];

//Cara baru create dictionary
NSDictionary *person2 = @{@"name": @"Ali", @"age" : @"16", @"phone" : @"0147763269"};

//Seperti array juga, NSDictionary tidak boleh boleh diubah contentnya,
//kita perlu menggunakan NSMutableDictionary jika mahu tambah key-value baru

//Create NSMutableDictioanary
 NSMutableDictionary *person3 = [NSMutableDictionary dictionary];
 [person3 setValue:@"ali" forKey:@"name"];
 [person3 setValue:@"16" forKey:@"age"];
 [person3 setValue:@"0147763269" forKey:@"phone"];

//Untuk akses value dalam dictionary, kita menggunakan format berikut
//Cara lama
NSString *name = [person3 valueForKey:@"name"];

//ataupun cara baru yang lebih pendek
NSString *name2 = person[@"name"];

NSLog(@"value untuk name = %@", name2);

4. Combination

Ketiga-tiga class yang telah diterangkan amat penting dan selalu digunakan dalam coding. Sekarang kita gabung ketiga2 class tersebut


//Declare 3 dictionary
NSDictionary *aliDict = @{@"name": @"Ali", @"age" : @"16", @"phone" : @"0147763269"};
NSDictionary *abuDict = @{@"name": @"abu", @"age" : @"23", @"phone" : @"0157773902"};
NSDictionary *ahmadDict = @{@"name": @"ahmad", @"age" : @"43", @"phone" : @"0140763264"};

//Declare array dan masukkan ketiga2 dictionary diatas ke dalamnya
NSMutableArray *personArray = [NSMutableArray array];
[personArray addObject:aliDict];
[personArray addObject:abuDict];
[personArray addObject:ahmadDict];

//Dapatkan value untuk name
NSArray *names = [personArray valueForKey:@"name"];

//print setiap name dalam names
for (NSString *nameStr in names) {
    NSLog(@"%@", nameStr);
}

Code Explanation:
line 1-11: kita hanya declare 3 dictionary untuk ali, abu dan ahmad kemudian masukkan dictioanary tersebut ke dalam array.
line 14: Pada line ini kita menggunakan valueForKey:, seperti yang anda tahu personArray bukannya dictionary. Tetapi valueForKey: untuk NSArray adalah sangat berguna, ia membolehkan anda mendapatkan setiap value daripada content dan return dalam bentuk array.
line 17-19: Pada line 17 kita menggunakan fast enumeration, dengan fast enumeration ia akan loop setiap object di dalam array. Pada line 17-19, ia loop object di dalam array names dan print ke output

Anda boleh cuba tukar key pada line ke 14 kepada @”age” atau @”phone” dan lihat output yang terhasil

Download Xcode project berdasarkan contoh diatas

Jan 142013
 

Assalamualaikum,

Blog ni akan menceritakan pasal Apple Mac OS dan juga programming tutorial untuk Apple device.

Saya seorang programmer yang masih belajar lagi menggunakan Cocoa framework iaitu programming untuk Apple device dan juga telah membuat beberapa apps untuk Mac OS