ก็ตอนนี้ก็เขียนมาเกือบจะจบ Foundation Framework แล้วอะน่ะ วันนี้มาต่อด้วยเรื่อง dictionary กันดีกว่า
ในภาษา objective-c มี class ที่เป็นลักษณะ data structure ค่อนข้างเยอะมาก และหนึ่งในนั้นที่ควรจะรู้ก็คือ dictionary งั้นมาทำความเข้าใจก่อนเลยละกันว่ามันคืออะไร
NSDictionary นี้มันก็คือ class ที่เก็บตัวแปรหลายๆตัวได้ ไม่จำกัดว่าจะเป็นตัวแปร ชนิดเดียวกันหรือไม่ อาจจะต่างชนิดกันก็ได้ และการเก็บตัวแปรแต่ละตัวนั้นจะมี keyword
เป็นส่วนที่ใช้อ้างอิงถึงตัวแปรนั้น ก็เหมือนๆกับพจนานุกรมนั่นเหละ เวลาเราจะหาความหมายของคำแปรนั้นๆ ก็เปิด dic แล้วก็ค้นหาความหมายโดยใช้ keyword การใช้ NSDicttionary ก็เช่นเดียวกัน อยากได้ตัวแปรไหนก็ใช้ keyword ทำการหาค่าของตัวแปรนั้นๆ
NSDictionary มี class ย่อยๆ 2 ส่วนเหมือนๆกับ NSArray NSString นั่นก็คือ Mutable และ Immutable ซึ่งก็ประกอบไปด้วย class ต่อไปนี้
- NSDictionary
- NSMutableDictionary
เรามาดูตัวอย่าง การใช้งานง่ายๆกัน
#import <Cocoa/Cocoa.h> int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; // Immutable Dictionary NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys: @"Sample String" ,@"iString" , [NSNumber numberWithInt:50] ,@"iNumber" , @"Hello world" ,@"iString2", nil]; printf("I.Dic 1:%s\n",[[dic objectForKey:@"iString"] UTF8String]); printf("I.Dic 2:%d\n",[[dic objectForKey:@"iNumber"] intValue]); printf("I.Dic 3:%s\n",[[dic objectForKey:@"iString2"] UTF8String]); // Mutable Dictionary NSMutableDictionary *muDic =[NSMutableDictionary dictionary]; [muDic setObject:@"Sample String from mu.dic" forKey:@"mString"]; [muDic setObject:[NSNumber numberWithInt:90] forKey:@"mNumber"]; printf("M.Dic 1: %s\n",[[muDic objectForKey:@"mString"] UTF8String]); printf("M.Dic 2: %d\n",[[muDic objectForKey:@"mNumber"] intValue] ); [pool drain]; return 0; }
ตัวโปรแกรมเองก็ไม่ได้มีอะไรซับซ้อนเลย เป็นการเก็บค่าตัวแปรชนิดต่างๆ NSDictionary นั้นจะมี Function สำคัญคือ dictionaryWithObjectsAndKeys
ตรงนี้จะเป็นการประกาศ NSDictionary แล้วเราก็ทำการ init ค่าให้แก่ตัวแปร ถ้าดูจาก code จะเห็นส่วนที่เป็นสี สลับกัน 3 สี โดยที่ตัวแรกคือ data ส่วนตัวที่สองคือ keyword เช่น
[NSNumber numberWithInt:50,@"iNumber"];
- [NSNumber numberWithInt:] ตัวแรกนี้คือ data ที่่ต้องการเก็บ
- @”iNumber” ส่วนตัวหลังคือ keyword
[muDic setObject:@"Sample String from mu.dic" forKey:@"mString"];
โหลด source ไปลองเล่นกันได้
Download Foundation Framework IV Source Files


