Полученные свойства - предикат

У меня есть вопрос об использовании извлеченных свойств внутри NSPredicate (см. Ниже «Мой вопрос»). Речь идет не о предикате для получения извлеченного свойства. Для разъяснения и для других, которые также могут столкнуться с этой проблемой, я попытался сделать небольшой пример проекта.

SAMPLE PROJECT

Потребность использовать Fetched Properties возникла, потому что мое приложение было отклонено из-за нарушения Руководства по хранению данных iOS. ВQA1719 они пишут:

Apps should avoid mingling app data and user data in the same file.

Я думаю, что это может быть необходимо для более легкой синхронизации ICloud, а также может помочь в миграции.

Итак, как это сделать?

Я использовал предварительно загруженную базу данных sqlite, которую я скопировал из пути к пакету при первом запуске и использовал для сохранения пользовательских изменений. Поскольку вы не должны смешивать предварительно загруженные и пользовательские данные, я пытаюсь разделить их.

Основная проблема заключается в том, что отношения между разными магазинами невозможны (Отношения между магазинами).

Я еще не нашел образец для проекта «Собранная недвижимость», поэтому я пытаюсь сделать свой собственный.

Для образца есть:

a preloaded list of books (in the sample you 'preload' them with the Plus Icon) which is stored in the persistent store Books.sqlite and a way to make books your favorite ones. This is stored in the persistent store UserData.sqlite.

Объектами являются:

--------------                --------------
|   Books    |                |   Favorite |
--------------                --------------
- author                      - favorite
- title        --- 1 : 1 ---  - books_title

Entity "Книги" предназначен для PreloadedData, 'a Favourite' должен содержать UserData.

The Favorite-Tag is just an example, it may also be User made Notes (Predicate for Note available) or if the book is rented to somebody else...

В моем xcdatamodeld (Xcode Editor) я добавил две конфигурации (PreloadStore, UserStore). Каждый содержит только необходимую сущность.

Они используются с (все остальное от шаблона):

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
...
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:@"PreloadStore" URL:storeURL options:nil error:&error]) {
...
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:@"UserStore" URL:storeURLUserData options:nil error:&error]) {

Я сделал извлеченное свойство link_favorite в Книгах с Предикатом

books_title == $FETCH_SOURCE.title

Пример проекта может бытьdownloaded Вот, Он работает, за исключением предиката (фильтр по избранным книгам).

MY QUESTION

Я хотел бы отфильтровать мои выборки в Книгах только по тем книгам, которые являются любимыми. Я пытался с помощью

fetchRequest.predicate = [NSPredicate predicateWithFormat:@"favorite_link.favorite == 1"];

вMasterViewController.m (fetchedResultsController), но это только приводит к сбою.

Я думаю, что я должен использовать что-токак здесь с COUNT или SUBQUERY, но я не могу понять это.

Заранее спасибо за помощь!

--edit:

Я сделал простую выборку NSArray (Core Data), здесь работает следующее:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY link_favorite.favorite == 1"];
result = [result filteredArrayUsingPredicate:predicate];

Но как мне перевести это в SUBQUERY для NSFetchedResultsController (попробовал эту статью в блоге)? Неправильно это:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(contents, $x, $x.link_favorite.favorite == 1).@count > 0"]

Ответы на вопрос(2)

Ваш ответ на вопрос