Tag Archives: NSMutableDictionary

Objective-C Programming Chapter 9

ในบทผ่านมาเราได้เรียนรู้กับ Foundation Framework กันไปบ้างแล้วนั่นก็คือ NSString , NSMutableString และ NSScaner ส่วนในบทนี้เราจะเรียนรู้กับคลาส Collection ต่างๆที่มีใน Foundation Framework แล้วคอลเลคชั่นคืออะไร ? คอลเลคชั่นก็คือคลาสหรือโครงสร้างของข้อมูลที่รวบรวมหรือจัดเก็บคลาสอื่นๆ พูดง่ายๆก็คือเป็นคลาสที่สามารถเก็บอ๊อบเจ็คต่างๆไว้ได้ โดยมีการกำหนดรูปแบบในการจัดเก็บ เช่น จัดเก็บแบบระบุตำแหน่งหรือใช้ key ในการอ้างที่จัดเก็บเป็นต้น

Array

การจัดเก็บข้อมูลพื้นที่ง่ายและใช้กันมากที่สุดก็คือ Array อาร์เรย์เป็นคลาสที่เก็บข้อมูลแบบระบุตำแหน่งโดยใช้ตัวเลข (index) เมื่อเราต้องการจะจัดเก็บข้อมูลต้องระบุตำแหน่งว่าจะนำข้อมูลนั้นไปไว้ยังตำแหน่งใดของอาร์เรย์ เมื่อต้องการจะนำข้อมูลออกมาใช้ก็ต้องระบุตำแหน่งที่ต้องการเช่นเดียวกัน เปรียบเสมือนลิ้นชักเก็บเอกสารเมื่อเราต้องการจะจัดเก็บเอกสาร ก็ต้องกำหนดว่าจะเก็บไว้ที่ชั้นใด เมื่อต้องการเอกสารคืนก็ต้องรู้ตำแหน่งของชั้นที่เราเก็บไว้

array

 

ใน Foundation Framework มีคลาสอาร์เรย์ด้วยกัน 2 คลาสคือ immutable และ mutable เช่นเดียวกับคลาสสตริงที่เราได้ลองใช้งานกันไปในบทที่แล้ว สำหรับคลาสแรกที่จะได้ลองเขียนโปรแกรมกันก็คือ NSArray เป็นคลาสแบบ immutable ไม่สามารถเปลี่ยนแปลงแก้ไขใดๆได้ ดังนั้นการกำหนดค่าให้กับอาร์เรย์ต้องทำตั้งแต่การประกาศตัวแปร

Program 9.1

โปรแกรม 9.1 แสดงตัวอย่างการใช้งาน NSArray เริ่มต้นด้วยการประกาศอ๊อบเจ็ค daysName ซึ่งเป็น NSArray การประกาศอาร์เรย์นี้ได้กำหนดค่าเริ่มต้นของอาเรย์ด้วยเมธอด initWithObjects: พร้อมกับค่าสตริงค่าแรกนั่นก็คือ Sunday หลังจากนั้นตามด้วยเครื่องหมาย , (Commar) คั่นตัวแปรเพื่อที่เราจะได้กำหนดค่าในลำดับต่อไปนั่นคือ Monday และไล่ลำดับไปเรื่อยๆจนถึง Satuday ซึ่งเป็นตัวสุดท้าย เนื่องจากเมธอด initWithObjects: สามารถกำหนดค่าเริ่มต้นได้อย่างไม่จำกัด เมธอดนี้จึงได้กำหนดให้ปิดท้ายด้วย nil เพื่อบอกให้รู้ว่าสิ้นสุดการกำหนดค่าเริ่มต้นของอาร์เรย์ Continue reading Objective-C Programming Chapter 9

Foundation Framework IV – Dictionary

ก็ตอนนี้ก็เขียนมาเกือบจะจบ 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

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

ตัวโปรแกรมเองก็ไม่ได้มีอะไรซับซ้อนเลย เป็นการเก็บค่าตัวแปรชนิดต่างๆ NSDictionary นั้นจะมี Function สำคัญคือ dictionaryWithObjectsAndKeys
ตรงนี้จะเป็นการประกาศ NSDictionary แล้วเราก็ทำการ init ค่าให้แก่ตัวแปร ถ้าดูจาก code จะเห็นส่วนที่เป็นสี สลับกัน 3 สี โดยที่ตัวแรกคือ data ส่วนตัวที่สองคือ keyword เช่น

  • [NSNumber numberWithInt:] ตัวแรกนี้คือ data ที่่ต้องการเก็บ
  • @”iNumber” ส่วนตัวหลังคือ keyword
จะเห็นว่า NSDictionary นั้นสามารถเก็บตัวแปรที่ต่างชนิดกันได้
เมื่อเราจะเรียกใช้ ก็เพียงแค่ เรียกใช้ function objectForkey: แล้วก็ตามด้วย key ที่ต้องการเช่น [dic objectForKey:@”iString”]
ส่วน NSMutableDictionary นั้นเราก็ทำการประกาศโดยที่ไม่ต้อง init เหมือนกับ NSDictionary ก็ได้ แล้วค่อยมาเพิ่มตัวแปรเข้าไปที่หลังด้วย function ที่ชื่อว่า setObject:forKey เป็นต้นว่า

เวลาเรียกใช้งานก็เหมือนกับ NSDictionary คือเรียก objectForKey ก็เป็นอันจบ ส่วนข้อแตกต่างระกว่าง mutable กับ immutable ผมคงไม่อธิบายแล้วนะครับ เพราะว่าใน NSArray กับ NSString ได้อธิบายไปแล้ว

โหลด source ไปลองเล่นกันได้
Download Foundation Framework IV Source Files