NSArray วันนี้มาว่าด้วยเรื่อง Array Object สำหรับ NSArray นั้นคือ class ที่เอาไว้เก็บ object โดยมีลำดับเป็นการอ้างอิง และ array นั่นก็มีอยู่ 2 แบบเหมือนๆกับ string คือ mutable ( เปลี่ยนแปลงค่าได้ ) และ immutable ( เปลี่ยนค่าไม่ได้ )
- โดยการประกาศ immutable จะใช้ NSArray
- ส่วน mutable จะใช้ NSMutableArray
การใช้ที่จะไช้ array เราก็ต้องทำการ #import <Foundation/NSArray.h> เข้ามาถึงจะสามารถใช้งานได้
ก็มาดูตัวอย่างการใช้งานเลยดีกว่า
#import <Cocoa/Cocoa.h> #import <Foundation/NSArray.h> int main(int argc, char *argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // Immutable NSArray *dayName = [NSArray arrayWithObjects: @"Sunday" , @"Monday" , @"Tueday" , @"Wednesday" , @"Thursday" , @"Friday" , @"Saturday",nil ]; int i = 0; printf("Day name: \n"); for (i = 0;i < [dayName count] ; i++ ) { printf("%s ",[[dayName objectAtIndex:i] UTF8String]); } // Mutable NSMutableArray *seasonName = [NSMutableArray arrayWithCapacity:4]; [seasonName addObject:@"Summer"]; [seasonName addObject:@"Winter"]; printf("\n\nCurrent array\n"); for (i = 0;i < [seasonName count] ; i++ ) { printf("%s ",[[seasonName objectAtIndex:i] UTF8String]); } // Insert object [seasonName insertObject:@"Autumn" atIndex:0 ]; [seasonName addObject:@"Spring"]; printf("\n\nAfter insert\n"); for (i = 0;i < [seasonName count] ; i++ ) { printf("%s ",[[seasonName objectAtIndex:i]UTF8String]); } [pool release]; }
Mutable
จากข้างบน เราประกาศตัวแปร dayName แล้วก็ให้กำหนดค่าเริ่มต้น(initial) ให้กับ array เลย โดยเราเรียกใช้ arrayWithObjects เพื่อทำการกำหนดค่าให้กับ Array ตั้งแต่ประกาศตัวแปรตั้งแต่แรก แล้วเราก็มาทำการวน loop ให้แสดงค่าใน array ออกมา จะมีที่พิเศษใน loop หน่อยก็ตรงที่เราสามารถนับจำนวน array ได้ด้วย count เช่น [dayName count];
*** arrayWithObjects ต้องมี s ด้วยน่ะ ถ้าไม่งั้นจะเป็น arrayWithObject แล้วมันจะ init ได้แค่ตัวเดียว ***
Immutable
ก็การประกาศ NSMutableArray ก็เหมือนๆกับ NSArray จะทำการ init เลยตั้งแต่แรกเหมือน NSArray ก็ได้ แต่จากตัวอย่างเราจะกำหนด ขนาดให้กับ Mutable Array ก่อน แล้วหลังจากนั้นจึงค่อยๆใส่ค่าตัวแปรให้กับ Mutable Array โดยการเรียกใช้งาน addObject
และหลังจาก addObject ไปได้ 2 object เราก็ เพิ่ม object ให้กับ Mutable array โดยการเรียก insertObject:atIndex ตรงนี้เป็นการใส่ค่าให้กับ Mutable Array โดยสามารถกำหนดว่าจะแทรกไว้ตำแหน่งไหนของ Mutable array ก็ได้
ผลลัพธ์ที่ได้ก็จะเป็น แบบนี้
Day name:
Sunday Monday Tueday Wednesday Thursday Friday Saturday
Current array
Summer Winter
After insert
Autumn Summer Winter Spring
*** เดี๋ยวมาต่อเรื่อง Array อีกที มันค่อนข้างเยอะ ***
ปล. ยังไม่มี source น่ะครับบ


