Tôi hơi mờ về cách xóa quy tắc cho các mối quan hệ trong Dữ liệu lõi, ít nhất là ngoài các trường hợp đơn giản được mô tả trong tài liệu.Quy tắc xóa dữ liệu lõi - mối quan hệ nhiều, xóa khi trống
Hầu hết các trường hợp đó và hầu hết các câu trả lời tôi đã thấy cho câu hỏi ở đây, sử dụng mô hình nơi đối tượng ở bên trái mối quan hệ một-nhiều "sở hữu" các đối tượng ở bên phải: ví dụ: a Person
có PhoneNumber
giây và nếu bạn xóa người bạn xóa tất cả các số được liên kết của họ. Trong đó loại trường hợp, giải pháp là rõ ràng: Core Dữ liệu sẽ xử lý tất cả mọi thứ cho bạn nếu bạn thiết lập các mối quan hệ như vậy:
Person --(cascade)-->> PhoneNumber
PhoneNumber --(nullify)--> Person
Những gì tôi quan tâm là điều ngược lại: từ A đến-nhiều mối quan hệ nơi "quyền sở hữu" bị đảo ngược. Ví dụ, tôi có thể mở rộng mã mẫu CoreDataBooks để thêm một thực thể Author
để thu thập tất cả thông tin về một tác giả duy nhất ở một nơi. A Book
có một tác giả, nhưng tác giả có nhiều sách ... nhưng chúng tôi không quan tâm đến tác giả mà chúng tôi không liệt kê sách. Do đó, việc xóa một mối quan hệ Author
có mối quan hệ books
không được để trống và không được phép Book
tham chiếu Author
cụ thể mới nhất nên xóa Author
.
tôi có thể tưởng tượng một vài cách để làm điều này bằng tay ... những gì tôi không chắc chắn của là:
- không Core Data có một cách để làm ít nhất một số này automagically, như với quy tắc xóa mối quan hệ?
- có cách nào "hợp lý", cách ưa thích để xử lý loại tình huống này không?
Trừ khi có điều gì khác xảy ra, điều này dường như không thành công trong trường hợp, cả sách của tác giả đều bị xóa cùng một lúc. Tôi đang in ra giá trị của author.books.count trong tệp chuẩn tương ứng của tôi và nó là 2 cho cả hai cuốn sách. Sau đó, tác giả không bao giờ bị xóa. (tên lớp thay đổi để phù hợp với câu hỏi nhưng các mối quan hệ giống nhau.) –