Lý do bạn chưa thấy các ví dụ tương tự với thực thể RecipeIngredient
của mình là bạn không cần các đối tượng chung giống như trong Dữ liệu chính. Bạn đang xử lý Dữ liệu cốt lõi như thể nó là một cơ sở dữ liệu quan hệ, nơi bạn thường sử dụng một bảng kết nối để tạo mối quan hệ nhiều-nhiều giữa các thực thể hiệu quả. Như được giải thích trong phần phụ Many-to-Many Relationships của Core Data Programming Guide, với Dữ liệu cốt lõi, tất cả những gì bạn cần làm là chỉ định mối quan hệ nhiều-nhiều theo cả hai hướng giữa hai thực thể. Lưu ý nhận xét ngoặc trong tài liệu:
(Nếu bạn có một nền tảng về quản lý cơ sở dữ liệu và điều này khiến bạn quan tâm, đừng lo lắng: nếu bạn sử dụng một cửa hàng SQLite, Core Data tự động tạo ra các trung gian tham gia . bảng cho bạn)
Dưới đây là một minh chứng về mối quan hệ như bạn nên mô hình nó, xé thẳng từ soạn thảo mô hình Xcode của:
Nếu bạn vẫn muốn xem các ví dụ về cách thực hiện việc này, hãy tìm kiếm thứ gì đó như "Dữ liệu cốt lõi nhiều cho nhiều mối quan hệ" và bạn sẽ tìm thấy rất nhiều. Bạn có thể bắt đầu ở đây trên StackOverflow; tìm kiếm nhanh đã bật lên một số ví dụ, bao gồm How do you manage and use "Many to many" core data relationships?.
Cập nhật: Từ nhận xét của bạn, tôi hiểu rằng bạn muốn sử dụng đối tượng trung gian để thêm thông tin về mối quan hệ giữa công thức và nguyên liệu. Điều đó là trường hợp một pháp nhân khác được bảo hành. Vì vậy, chúng ta hãy nói mô hình của bạn trông như thế này:
Có vẻ như không chắc rằng bạn muốn lấy một trong những RecipeIngredient
đối tượng trực tiếp; bạn có thể chỉ cần làm theo các mối quan hệ thích hợp. Vì vậy, bạn có thể tạo yêu cầu tìm nạp để tìm tất cả các Bí quyết có tên khớp với @ "bánh sô cô la". (Có rất nhiều ví dụ về yêu cầu tìm nạp bằng cách sử dụng biến vị ngữ trong tài liệu và trên toàn bộ mạng, vì vậy tôi sẽ không làm điều đó ở đây.) Yêu cầu tìm nạp của bạn sẽ trả về một loạt công thức mà chúng tôi có thể gọi cakeRecipes
, nhưng bạn có thể chỉ quan tâm đến một:
Recipe *cake = cakeRecipes.firstObject;
Bây giờ, bạn muốn biết gì về nguyên liệu cho bánh của mình? Dưới đây là danh sách các thành phần:
NSArray *ingredientNames = cake.ingredients.ingredient.name;
Nếu bạn muốn đăng nhập tên thành phần và các khoản:
for (RecipeIngredient *i in cake.ingredients) {
NSLog(@"%@ %@", i.amount, i.ingredient.name);
}
Hoặc, bạn có thể sử dụng một yêu cầu để tìm các thành phần phù hợp với "cần tây" lấy , lưu trữ kết quả trong celeries
.Sau đó, bạn có thể tìm kiếm công thức nấu ăn bao gồm cần tây:
Ingredient *celery = celeries.firstObject;
NSArray *recipes = celery.recipes.recipe
Nếu điều này không giúp được, có lẽ bạn có thể cụ thể hơn về vấn đề này. Ngoài ra, tôi biết bạn đã yêu cầu Swift, nhưng các ngón tay của tôi vẫn được sử dụng để Obj-C, và các chi tiết ngôn ngữ không thực sự phát huy ở đây - Dữ liệu cốt lõi hoạt động giống nhau trong cả hai ngôn ngữ.
là gì nó mà bạn không hiểu, và rằng bạn hy vọng sẽ học từ một ví dụ? –