Không có mảng hoặc từ điển "gốc" trong Dữ liệu lõi. Bạn có thể lưu trữ một NSArray
hoặc một NSDictionary
thuộc tính có thể chuyển đổi. Điều này sẽ sử dụng NSCoding
để tuần tự hóa mảng hoặc từ điển thành một NSData
thuộc tính (và giải thích hợp lý nó khi truy cập). Ưu điểm của phương pháp này là dễ dàng. Nhược điểm là bạn không thể truy vấn vào mảng hoặc từ điển (được lưu dưới dạng BLOB trong kho lưu trữ dữ liệu) và nếu bộ sưu tập lớn, bạn có thể phải di chuyển nhiều dữ liệu đến / từ kho lưu trữ dữ liệu (nếu đó là một kho dữ liệu SQLite) chỉ để đọc hoặc sửa đổi một phần nhỏ của bộ sưu tập.
Cách khác là sử dụng Dữ liệu lõi cho nhiều mối quan hệ để mô hình hóa ngữ nghĩa của bộ sưu tập mảng hoặc từ điển. Mảng dễ hơn, vì vậy hãy bắt đầu với điều đó. Dữ liệu cốt lõi cho nhiều mối quan hệ thực sự mô hình hóa một tập hợp, vì vậy nếu bạn cần chức năng giống như mảng, bạn phải sắp xếp tập hợp (sử dụng thuộc tính tìm nạp là một cách thuận tiện để thực hiện việc này) hoặc thêm thuộc tính chỉ mục bổ sung vào thực thể lưu trữ các mục mảng và tự quản lý các chỉ mục. Nếu bạn đang lưu trữ một mảng đồng nhất (tất cả các mục đều cùng loại), thật dễ dàng để mô hình mô tả thực thể cho các thực thể mảng. Nếu không, bạn sẽ phải quyết định có nên sử dụng thuộc tính có thể chuyển đổi để lưu trữ dữ liệu vật phẩm hay tạo một họ các thực thể vật phẩm hay không.
Mô hình hóa một từ điển có thể sẽ yêu cầu một mối quan hệ nhiều đến một tập hợp các thực thể lưu trữ một khóa và một giá trị. Cả khóa và giá trị đều tương tự với thực thể mục cho mảng, được mô tả ở trên. Vì vậy, chúng có thể là các kiểu nguyên gốc (nếu bạn biết chúng trước thời hạn), một thuộc tính có thể chuyển đổi hoặc mối quan hệ với một thể hiện từ một họ các thực thể cụ thể kiểu.
Nếu tất cả điều này nghe có vẻ hơi nản chí, nó là. Việc sắp xếp dữ liệu tùy ý vào một khung phụ thuộc lược đồ như Core Data là khó khăn.
Đối với dữ liệu có cấu trúc, như địa chỉ, hầu như luôn dễ dàng dành thời gian mô hình hóa các thực thể một cách rõ ràng (ví dụ: một thuộc tính cho từng phần của địa chỉ). Bên cạnh việc tránh tất cả các mã bổ sung để mô hình hóa một từ điển, điều này làm cho giao diện người dùng của bạn dễ dàng hơn (các ràng buộc sẽ "chỉ hoạt động") và logic xác thực của bạn, v.v. rõ ràng hơn vì phần lớn có thể được xử lý bởi Core Data.
Cập nhật
Kể từ OS X 10.7, Core Data bao gồm loại tập hợp được đặt hàng có thể được sử dụng thay cho mảng. Nếu bạn có thể nhắm mục tiêu 10.7 trở lên, đây là giải pháp tốt nhất cho các bộ sưu tập được sắp xếp (giống như mảng).