setValue:forKey:เป็นส่วนหนึ่งของโปรโตคอลNSKeyValueCodingซึ่งช่วยให้คุณสามารถเข้าถึงคุณสมบัติของวัตถุจากไลค์ของเครื่องมือสร้างส่วนต่อประสาน setValue:forKey:จะดำเนินการในชั้นเรียนอื่น ๆ NSDictionaryกว่า
setObject:forKey:เป็นNSMutableDictionary'sเหตุผลที่มีอยู่ ลายเซ็นของมันเกิดขึ้นค่อนข้างคล้ายกับ setValue: forKey :, แต่จะเป็นแบบทั่วไปมากกว่า (เช่นชนิดของคีย์ใด ๆ ) มันค่อนข้างบังเอิญว่าลายเซ็นนั้นคล้ายคลึงกันมาก
สิ่งที่เพิ่มความสับสนคือการใช้ NSMutableDictionary setValue:forKey:เทียบเท่ากับsetObject:forKey:ในกรณีส่วนใหญ่ ในคลาสอื่นให้setValue:forKey:เปลี่ยนตัวแปรสมาชิก ในNSMutableDictionaryมันจะเปลี่ยนรายการพจนานุกรมเว้นแต่คุณจะใส่คำนำหน้าคีย์ด้วยอักขระ '@' ซึ่งในกรณีนี้จะแก้ไขตัวแปรสมาชิก
ดังนั้นในการสรุปการใช้setObject:forKey:เมื่อคุณจำเป็นต้องทำงานด้วยปุ่มพจนานุกรมและค่านิยมและsetValue:forKey:ในกรณีที่หายากที่คุณต้องการที่จะแก้ไขปัญหาKVP
แก้ไข: และโอ้ดูเหมือนว่ามีการถามและตอบก่อนหน้านี้: ความแตกต่างระหว่าง objectForKey และ valueForKey?