Foundation Framework III – Array part. 1

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 น่ะครับบ

Technorati Tags: , , , , ,


Leave a Reply

You must be logged in to post a comment.