2011-11-26 40 views
18

Tôi mới làm quen với mô hình Dữ liệu cốt lõi và tôi gặp khó khăn trong việc hiểu mối quan hệ một-nhiều.CoreData - mối quan hệ được lập mô hình một-nhiều đến như là một đối một

Tôi có một thực thể mẹ gọi là Task, có thể có một số trường hợp của thực thể Comment. Tôi đã mô hình hóa nó như thế này: trên Comments, một mối quan hệ với Task được gọi là task với một thực thể Task đích. Trên Task, một mối quan hệ được gọi là comments, với Comment làm điểm đến của nó và cả hai mối quan hệ đều là nghịch đảo khác.

Không xác định kết quả nghịch đảo trong cảnh báo hoặc thông báo lỗi. Trong khi mô hình hóa cách này hoạt động, tôi đã nhận thấy rằng một khi tôi tạo ra một bình luận thứ hai cho một Task cho trước, đầu tiên được thay thế (mối quan hệ một-một).

Cách chính xác để cho Mô hình dữ liệu cốt lõi biết mối quan hệ này cho phép nhiều nhận xét trong một Task là gì?

Ngoài ra, vì CoreData có vẻ tự quản lý khóa chính, làm cách nào để tạo một số NSPredicate để truy xuất tất cả các nhận xét cho một Tác vụ nhất định?

Cảm ơn mọi đề xuất!

Trả lời

42

Trước hết bạn cần phải thiết lập các plural tùy chọn trong thực thể Task, chọn nó trong .xdatamodeled của bạn và chọn relationship tài sản của Task thực thể để comments bạn sẽ có thể thấy điều này enter image description here

có một plural hãy chắc chắn kiểm tra xem. Bạn phải tạo lại NSManagedObject nếu bạn sử dụng các lớp được tạo và cũng có thể nếu bạn sử dụng cửa hàng sqlite, bạn phải xóa và xây dựng lại để nó không phàn nàn về lược đồ mới không giống với lược đồ cũ.

Để kiểm tra xem bạn có mối quan hệ một đến nhiều không, thực thể Task của bạn phải có thuộc tính được gọi là nhận xét là loại lớp học NSSet không phải là Nhận xét.

Nếu bạn muốn truy xuất tất cả nhận xét cho một tác vụ cụ thể, bạn cần phải lặp lại thuộc tính NSSet(comments) của tác vụ đó.

+0

Cảm ơn! Tôi thậm chí không biết các tùy chọn này có sẵn. Tôi đoán tôi luôn chỉnh sửa mô hình của mình bằng ngăn bên phải đã đóng. Tôi hiện không sử dụng các lớp được tạo ra ngoài việc kiểm tra cách Core Data đặt tên cho các bộ định cư và các getters (và các mối quan hệ). – tutiplain

Các vấn đề liên quan