Tôi đang cố gắng nhập một tập hợp dữ liệu vào lưu trữ liên tục CoreData. Đây là dữ liệu chỉ đọc sẽ được hiển thị cho người dùng trong thời gian chạy.Vấn đề quan hệ một-nhiều và nghịch đảo của CoreData
Tôi có một thực thể được gọi là "Danh mục" có quan hệ một-nhiều với một thực thể được gọi là "Mục", lần lượt có mối quan hệ nghịch đảo với Danh mục.
Khi tôi thêm mục vào ngữ cảnh, làm cách nào để liên kết chúng với Danh mục chính xác? Tôi có thể thấy trong dB SQLite rằng nó được thực hiện bằng cách thêm một trường thể loại vào bảng mục và có thể sử dụng khóa chính danh mục cho mối quan hệ. Nhưng PK là hậu trường ... có phương pháp tạo kết nối không?
Tôi cũng nhìn thấy trong lớp Category tôi rằng có những phương pháp tạo ra bởi CoreData để thêm mục, nhưng tôi giả định rằng đây là những ALOS phương pháp behind-the-scene cho phép CoreData để duy trì các mối quan hệ:
@interface Category (CoreDataGeneratedAccessors)
- (void)addItemObject:(Item *)value;
- (void)removeItemObject:(Item *)value;
- (void)addItems:(NSSet *)value;
- (void)removeItems:(NSSet *)value;
@end
Tôi đọc trong hướng dẫn lập trình mà CoreData tự động quan tâm đến phía bên kia của mối quan hệ, nhưng tôi không thể tìm ra cách thực hiện liên kết ban đầu đến một Danh mục như tôi thêm Mục.
Cảm ơn
jk
Cảm ơn, Unforgiven. Tôi đã tìm ra hầu hết điều này từ một bài đăng khác trên một bảng khác, nhưng câu trả lời của bạn rõ ràng là một cái chuông. Chúc tài liệu Táo tốt hơn! Bây giờ tôi cần phải tìm hiểu làm thế nào để lấy mục cho một thể loại nhất định và tôi là nhà miễn phí! jk – Alpinista
Bạn cần liên kết NSPredicate với yêu cầu tìm nạp bạn sử dụng để tìm nạp đối tượng từ thực thể Mục. Nếu thực thể Danh mục của bạn lưu trữ tên của danh mục dưới dạng thuộc tính, bạn sử dụng mối quan hệ một-từ từ Mục đến Danh mục: NSPredicate * predicate = [NSPredicate predicateWithFormat: @ "category.name LIKE% @", yourCategoryNameStringHere]; Chỉ cần liên kết vị từ này với yêu cầu tìm nạp bạn sử dụng để tìm nạp đối tượng từ thực thể Mục. –
Cảm ơn một lần nữa, Unforgiven. Tôi phát hiện ra rằng bạn cũng có thể đi theo một hướng khác: nếu bạn có Danh mục, bạn có thể nhận được một mảng Các mục từ NSSet của thuộc tính Items của Categorie. – Alpinista