ไม่มีอาร์เรย์ "ประเภท" หรือประเภทพจนานุกรมในข้อมูลหลัก คุณสามารถจัดเก็บNSArray
หรือNSDictionary
เป็นคุณลักษณะที่เปลี่ยนแปลงได้ สิ่งนี้จะใช้ในNSCoding
การทำให้เป็นลำดับอาร์เรย์หรือพจนานุกรมเพื่อNSData
แอตทริบิวต์ (และ deserialize เหมาะสมเมื่อเข้าถึง) ข้อดีของวิธีนี้คือมันง่าย ข้อเสียคือคุณไม่สามารถสืบค้นลงในอาร์เรย์หรือพจนานุกรม (เก็บไว้เป็น BLOB ในแหล่งข้อมูล) และถ้าคอลเลกชันมีขนาดใหญ่คุณอาจต้องย้ายข้อมูลจำนวนมากไปยัง / จากแหล่งข้อมูล (ถ้าเป็น ที่เก็บข้อมูล SQLite) เพื่ออ่านหรือแก้ไขส่วนเล็ก ๆ ของการรวบรวม
อีกทางเลือกหนึ่งคือการใช้ความสัมพันธ์ของข้อมูลหลักกับหลาย ๆ แบบจำลองความหมายของอาเรย์หรือคอลเลกชันพจนานุกรม อาร์เรย์นั้นง่ายกว่าดังนั้นเริ่มด้วย ความสัมพันธ์ของข้อมูลหลักกับหลาย ๆ ตัวนั้นเป็นแบบจำลองของชุดดังนั้นถ้าคุณต้องการฟังก์ชั่นที่เหมือนอาร์เรย์คุณต้องเรียงลำดับชุด (การใช้คุณสมบัติดึงข้อมูลเป็นวิธีที่สะดวกในการทำเช่นนี้) หรือเพิ่มแอตทริบิวต์ดัชนีพิเศษให้กับเอนทิตี ที่เก็บรายการอาเรย์และจัดการดัชนีด้วยตัวเอง หากคุณกำลังจัดเก็บอาร์เรย์ที่เป็นเนื้อเดียวกัน (รายการทั้งหมดเป็นประเภทเดียวกัน) คุณสามารถจำลองแบบรายละเอียดเอนทิตีสำหรับเอนทิตีอาร์เรย์ได้ง่าย หากไม่มีคุณจะต้องตัดสินใจว่าจะใช้แอททริบิวต์ที่แปลงได้เพื่อจัดเก็บข้อมูลรายการหรือสร้างกลุ่มรายการเอนทิตี
การสร้างแบบจำลองพจนานุกรมน่าจะต้องมีความสัมพันธ์มากกับชุดของเอนทิตีที่เก็บคีย์และค่า ทั้งคีย์และค่ามีความคล้ายคลึงกับเอนทิตีไอเท็มสำหรับอาร์เรย์ตามที่อธิบายไว้ข้างต้น ดังนั้นพวกเขาอาจเป็นประเภทเนทีฟ (ถ้าคุณรู้ล่วงหน้า) แอตทริบิวต์ที่เปลี่ยนแปลงได้หรือความสัมพันธ์กับอินสแตนซ์จากตระกูลของเอนทิตีเฉพาะประเภท
หากสิ่งนี้ฟังดูน่ากลัวเล็กน้อยก็เป็นได้ การนำเสนอข้อมูลตามอำเภอใจเข้าสู่เฟรมเวิร์กที่ขึ้นกับสคีเช่น Core Data นั้นยาก
สำหรับข้อมูลที่มีโครงสร้างเช่นที่อยู่จะเป็นการง่ายกว่าที่จะใช้เวลาในการสร้างแบบจำลองเอนทิตีอย่างชัดเจน (เช่นแอตทริบิวต์สำหรับแต่ละส่วนของที่อยู่) นอกจากการหลีกเลี่ยงรหัสพิเศษทั้งหมดในการสร้างแบบจำลองพจนานุกรมแล้วสิ่งนี้ทำให้ UI ของคุณง่ายขึ้น (การผูกจะ "ทำงานได้") และตรรกะการตรวจสอบของคุณเป็นต้นชัดเจนมากขึ้นเนื่องจาก Core Data สามารถจัดการได้มาก
ปรับปรุง
ตั้งแต่ OS X 10.7 ข้อมูลหลักจะมีประเภทชุดที่สั่งซื้อซึ่งสามารถใช้แทนอาร์เรย์ได้ หากคุณสามารถกำหนดเป้าหมาย 10.7 หรือใหม่กว่านี่เป็นทางออกที่ดีที่สุดสำหรับคอลเลกชันที่สั่งซื้อ (เหมือนอาร์เรย์)