August 23, 2015

iOS9 Introducting the Contacts Framework

iOS9 จะมาพร้อมกับวิธีการเข้าถึง Address Book แบบใหม่ผ่าน Contacts Framework โดยจุดที่น่าสนใจก็คือ Framework ตัวนี้จะช่วยเราให้รอดพ้นจากความน่าเบื่อของ AddressBook Framework ตัวเดิมไปได้สักที ผมเชื่อว่าหลายคนต้องเบื่อ และรู้สึกว่า AddressBook Framework มันยากเย็นและดูซับซ้อน อีกทั้งวิธีการใช้งานก็ดูจะไม่เข้ากันกับ Objective-C เอาซะเลย

ดึงรายชื่อจาก Contacts ทั้งหมดที่มี
มาเริ่มลองดึงรายชื่อจากสมุดรายชื่อเลยดีกว่า โดย import Contacts ข้ามาใช้งาน จากนั้น สร้าง func listAllContacts() แบบนี้


August 01, 2015

Swift Type inference กับการลดรูป Closure

Closures คล้ายกับ functions และ method มันคือ block ของโค้ดที่เราเรียกใช้มัน แต่ไม่ได้เหมือนกันซะทีเดียว เพราะ closure ไม่มีชื่อ และมีความสามารถบางอย่างต่างออกไป เช่นการ capture value ที่เกิดใน scope เดียวกัน (บทความนี้ไม่ได้พูดถึง)

สำหรับหลายคนเมื่อเห็น syntax ประมาณนี้จะเกิดความสงสัยว่า โค้ดแบบนี้มาจากไหน

myArray.sorted{$0 > $1}

ซึ่งบทความนี้จะเล่าถึงที่มาที่ไปของมัน เริ่มจากลองดูตัวอย่างจาก method sorted ของ Array กันครับ

func sorted(isOrderedBefore: (T, T) -> Bool) -> [T]

method นี้มี parameter  1 ตัวชื่อ isOrderedBefore ซึ่งเป็น function ที่รับ parameter 2 ตัวชนิด T (ชนิดของข้อมูลที่ array บรรจุอยู่)  และ return Bool กลับออกมา ซึ่ง method sorted จะ return Array ที่เรียงเสร็จแล้วกลับออกมาอีกที

จากนิยามของ method sorted เมื่อเราลองลองสร้าง function เพื่อใช้เป็น parameter ตามที่นิยาม (รับ parameter 2 ตัว และ return เป็น Bool) ดู ก็จะได้โค้ดออกมาแบบนี้


ลองรันโค้ดดูจะพบว่า ได้ array ที่เรียงกันตามตัวอักษรถูกต้อง โดยอิงตามกฎที่ว่า ใครมาทีหลัง ให้มาก่อน