Propiedades Fetched - Predicado

Tengo una pregunta sobre el uso de propiedades recuperadas dentro de un NSPredicate (ver más abajo 'Mi pregunta'). No se trata del predicado para obtener la propiedad buscada. Para aclarar y para otros, que también pueden enfrentar este problema, traté de hacer un pequeño proyecto de muestra.

PROYECTO DE MUESTRA

La necesidad de usar Fetched Properties vino porque mi aplicación fue rechazada por violar las pautas de almacenamiento de datos de iOS. EnQA1719 escriben:

Las aplicaciones deben evitar mezclar datos de aplicaciones y datos de usuario en el mismo archivo.

Creo que esto puede ser necesario para facilitar la sincronización de ICloud y también puede ayudar en la migración.

Entonces, ¿cómo hacer esto?

Había utilizado una base de datos sqlite precargada, que copié de la ruta del paquete en el primer inicio y la usé para guardar las ediciones de los usuarios. Debido a que no debe mezclar datos de usuario y precargados, estoy tratando de separarlos.

El problema principal es que no es posible tener relaciones en diferentes tiendas (Relaciones entre tiendas).

No he encontrado una muestra para un proyecto de propiedad Fetched todavía, así que estoy aquí tratando de hacer la mía.

Para la muestra hay:

una lista de libros precargados (en la muestra los precargará con el icono Más) que se almacena en la tienda persistente Books.sqlite yUna forma de hacer tus libros favoritos. Esto se almacena en el almacén persistente UserData.sqlite.

Las entidades son:

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

La entidad 'Libros' es para PreloadedData, 'Favorito' debe contener UserData.

La Etiqueta favorita es solo un ejemplo, también puede ser Notas hechas por el usuario (Predicado para nota disponible) o si el libro se alquila a otra persona ...

En mi xcdatamodeld (Editor de Xcode) he agregado dos Configuraciones (PreloadStore, UserStore). Cada uno contiene solo la entidad necesaria.

Se usan con (todo lo demás es de boilerplate):

- (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]) {

Hice una propiedad recuperada link_favorite en Libros con el Predicado

books_title == $FETCH_SOURCE.title

El proyecto de muestra puede serdescargadoaquí. Está funcionando, excepto por el Predicado (filtro por libros favoritos).

MI PREGUNTA

Me gustaría filtrar mi búsqueda en Libros solo por aquellos libros que son favoritos. Traté de usar

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

enMasterViewController.m (fetchedResultsController), pero esto solo conduce a un bloqueo.

Creo que debo usar algocomo aquí con una cuenta o una subconsulta, pero no pude resolverlo.

¡Gracias de antemano por tu ayuda!

--editar:

Hice una búsqueda simple de NSArray (Core Data), aquí está funcionando:

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

Pero, ¿cómo puedo traducir esto en una SUBQUERY para el NSFetchedResultsController (probé este artículo de blog)? Mal es

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

Respuestas a la pregunta(2)

Su respuesta a la pregunta