หลายครั้งที่ผมมักเก็บข้อมูลต่างๆ ลง object แล้วนำ object เหล่านั้นเก็บไว้ใน array ก่อนนำมาใช้งาน ปัญหาที่พบก็คือหากต้องการลือก object บางตัวเพื่อนำมาใช้งานต้องเขียนโปรแกรมให้วิ่งเข้าไปวนรอบหาเอง
อีกวิธีหนึ่งที่่ช่วยให้เราไม่ต้องวนรอบหา object ที่ต้องการเองก็คือ ใช้ NSPredicate ช่วย ซึ่งมันจะ filter object ที่ถูกเก็บใน array โดยอิงจาก property ต่างๆของ object แทนเรา
เริ่มจากหากผมมี คลาส Person ที่มีื property ดังนี้
และผมมี object ของคลาส Person หลายตัวเก็บอยู่ในตัวแปร array ยาวๆ จากนั้นหากผมต้องการเลือก object ที่มี property name เป็น "Steve Jobs" ผมจะเขียน code ได้ดังนี้
เราจะเรียก method ชื่อ predicateWithFormat: พร้อมทั้งใส่ query string ลงไปตาม code ตัวอย่าง เท่านี้ personList ก็จะมีเฉพาะ object ของคลาส Person ที่มี name เป็น Steve Jobs แล้ว
นอกจากนี้เรายังสามารถเขียน predicate format ต่างๆ ที่ซับซ้อนกว่านี้ได้อีก โดยอ่านเพิ่มเติมได้ที่ Predicate Format String Syntax
Related Link from Roti
อีกวิธีหนึ่งที่่ช่วยให้เราไม่ต้องวนรอบหา object ที่ต้องการเองก็คือ ใช้ NSPredicate ช่วย ซึ่งมันจะ filter object ที่ถูกเก็บใน array โดยอิงจาก property ต่างๆของ object แทนเรา
เริ่มจากหากผมมี คลาส Person ที่มีื property ดังนี้
NSString *name; NSString *department; NSInteger salary;
และผมมี object ของคลาส Person หลายตัวเก็บอยู่ในตัวแปร array ยาวๆ จากนั้นหากผมต้องการเลือก object ที่มี property name เป็น "Steve Jobs" ผมจะเขียน code ได้ดังนี้
NSPredicate *predicate = [NSPredicate predicateWithFormat:
@"name == 'Steve Jobs'"];
[personList filterUsingPredicate: predicate];
เราจะเรียก method ชื่อ predicateWithFormat: พร้อมทั้งใส่ query string ลงไปตาม code ตัวอย่าง เท่านี้ personList ก็จะมีเฉพาะ object ของคลาส Person ที่มี name เป็น Steve Jobs แล้ว
นอกจากนี้เรายังสามารถเขียน predicate format ต่างๆ ที่ซับซ้อนกว่านี้ได้อีก โดยอ่านเพิ่มเติมได้ที่ Predicate Format String Syntax
Related Link from Roti
0 comments:
Post a Comment