Tôi có mô hình Dữ liệu cốt lõi trong đó thực thể Tác vụ bao gồm mối quan hệ tùy chọn nhiều-nhiều bị loại trừ vào thực thể ExcludedDay. Một trong các thuộc tính của ExcludedDay là ngày, là một đối tượng NSDate. Thực thể ExcludedDay có một mối quan hệ nghịch đảo bắt buộc nghịch đảo đối với thực thể Task.Làm thế nào để thiết lập chính xác một NSPredicate cho một mối quan hệ nhiều-nhiều khi sử dụng dữ liệu lõi?
Để tìm nạp tác vụ cho một ngày cụ thể, tôi cần đảm bảo rằng ngày được chỉ định không xuất hiện dưới dạng thuộc tính ngày của bất kỳ thực thể ExludedDay nào.
tôi bắt đầu cố gắng
NSPredicate *dayIsNotExcludedPredicate = [NSPredicate predicateWithFormat: @"ALL excludedDays.day != %@", today];
Tuy nhiên, bất chấp những gì tài liệu nói rằng, tất cả không làm việc và ứng dụng ném một ngoại lệ: Chấm dứt ứng dụng do ngoại lệ còn tự do ‘NSInvalidArgumentException’, lý do: ‘ngữ không được hỗ trợ.
Sau khi đăng cùng một câu hỏi trong diễn đàn này, tôi đã có thể đưa ra các vị sau đây với sự giúp đỡ của mọi người khác nhau:
NSPredicate * dayIsNotExcludedPredicate = [NSPredicate predicateWithFormat: @"[email protected] == 0 || ([email protected] > 0 && NONE excludedDays.day == %@))", today];
Trong khi điều này làm việc lúc đầu, tôi vừa phát hiện ra rằng đây chỉ hoạt động khi thực thể ExcludedDay chỉ chứa một ngày. Ngay khi thực thể ExcludedDay chứa nhiều hơn một ngày cho cùng một tác vụ, vị từ này ngừng hoạt động. Kết quả là, một nhiệm vụ được chọn cho một ngày mặc dù ngày xuất hiện dưới dạng một ngày trong thực thể ExcludedDay, điều này tất nhiên là sai. Vấn đề không được gắn với ngày bất động sản là một đối tượng NSDate: thay thế ngày bằng NSString tương ứng hoặc tương đương với một số nguyên, tôi vẫn phải đối mặt với cùng một vấn đề và hành vi không chính xác.
Cách chính xác để triển khai biến vị ngữ trong trường hợp này là gì? Có thể đây là lỗi liên quan đến BẤT CỨ toán tử tổng hợp khi sử dụng dữ liệu lõi? Cảm ơn bạn trước, điều này hiện đang khiến tôi phát điên.
Có thể bạn biết cách viết biểu thức với SUBQUERY với các lớp NSExpresion và NSComparisonPredicate? Với câu trả lời của bạn, tôi quyết định câu hỏi của tôi: http://stackoverflow.com/questions/2006927/whats-better-way-to-build-nspredicate-with-to-many-deep-relationships Cảm ơn – Victor
Cảm ơn bạn rất nhiều vì câu trả lời này, thực sự hữu ích. – Maria