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> เข้ามาถึงจะสามารถใช้งานได้

ก็มาดูตัวอย่างการใช้งานเลยดีกว่า

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

2 thoughts on “Foundation Framework III – Array part. 1”

  1. NSMutableArray สามารถขยายเนื้อที่ได้ตลอดเวลาครับ
    มันก็สามารถมองเหมือนกับ NSMutableArray alloc init ซึ่งตอนแรกก็มี capacity = 0 แต่เราก็สามารถ addObject เข้าไปได้เรื่อยๆครับ

  2. NSMutableArray *seasonName = [NSMutableArray arrayWithCapacity:4];

    จองไว้ 4

    ผลลอง addObject ไป 6 ครั้ง ทำไมยัง add ได้อยู่ครับ งงมาก

Leave a Reply