การบันทึก State ของ iPhone App คืออะไร?
มันคือการบันทึกค่าต่างๆ เพื่อที่ว่าเมื่อ user ปิด app แล้วเปิดขึ้นมาใหม่ก็จะได้ค่าเดิม เทียบได้กับ INI file ของ Windows นั่นเอง
สื่งที่ต้องทำมีสองส่วนคือ ตอน Save กับตอน Load ค่า
1. การ Save state ควรเรียกทุกครั้งที่มีการยืนยันการเปลี่ยนแปลงค่า บางท่านชอบ save ตอนจะปิดโปรแกรมทีเดียว (ใน applicationWillTerminate) ซึ่งมักจะเจอปัญหาว่าถ้าเครื่อง hang ค่าก็จะไม่ทันได้ save
1 2 3 | NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setInteger:myValue forKey:@"myKey"]; [defaults synchronize]; |
จากตัวอย่างข้างต้นเป็นการ save ค่า integer ของตัวแปรชื่อ myValue ด้วยชื่อ key ว่า myKey
จะเห็นว่ามีการเรียก [defaults synchronize] ด้วย เป็นการบอกว่าให้ save ค่านี้ทันที
2. การ Load state ควรจะเรียกครั้งแรกครั้งเดียวตอนเปิดโปรแกรม
1 2 3 4 5 | NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; int myValue = [defaults integerForKey:@"myKey"]; if(myValue) { //set default value for myValue } |
จากตัวอย่างข้างต้นเป็นการ load ค่าจาก key ที่ชื่อว่า myKey มาใส่ตัวแปรชื่อ myValue
โดยหากหากไม่มีค่า (เช่น เปิดใช้โปรแกรมเป็นครั้งแรก) ก็จะให้ใช้ค่า default แทน
นอกจาก integer ตามตัวอย่างข้างต้นแล้ว เรายังสามารถบันทึกค่าประเภทอื่นๆได้อีก แนะนำให้อ่านที่ NSUserDefaults Class Reference ครับ


