cocoa core-data controller entities

cocoa - Datos principales: ¿NSFetchedResultsController puede obtener dos entidades diferentes?



core-data entities (4)

Estoy trabajando en una aplicación para iPhone, y en una vista particular necesito cargar dos entidades diferentes: una que completará una UITableView y otra que completará una UITextView .

¿Es posible obtener ambas propiedades usando un solo NSFetchedResultsController ?

¿O necesito usar dos NSFetchedResultsController s diferentes?

¿Alguna idea sobre cómo abordar mejor este problema?


Cada solicitud de búsqueda tiene solo una entidad y cada controlador de resultados obtenido solo tiene una búsqueda. Por lo tanto, necesita controladores separados para cada entidad.

Si lo piensas, ¿cómo harías un predicado para buscar dos entidades lógicamente separadas?

Probablemente no necesites dos fetches en absoluto. En la mayoría de los casos, puede buscar las entidades que pueblan la tabla y luego usar una relación para que la entidad de la fila seleccionada rellene algo así como una vista de texto.


Como dijo TechZen, la respuesta es no.

Sin embargo, puede supervisar los NSManagedObjectContext del NSManagedObjectContext usted mismo y reaccionar a esos NSManagedObjectContext . Si realmente necesita ver más de una entidad (algo que es mucho más común en el iPad que en el iPhone), agregue un observador de NSNotification en NSManagedObjectContextDidSaveNotification y observe el -userInfo de NSNotification que aparece. Luego puede ejecutar predicados en contra de los resultados para determinar si necesita actualizar su pantalla. Eso es lo que NSFetchedResultsController está haciendo bajo las sábanas.


La mejor solución sería refactorizar su Modelo y ver si sus 2 entidades tienen algo en común. Puedes hacer una entidad abstracta para las cosas que se cruzan, y luego heredar tus 2 entidades. Realice la búsqueda en la entidad abstracta, y su controlador de resultados de búsqueda debería arrojar resultados mixtos.


The quick answer is NO. But I found a creative answer.

En TableViewController, crea una barra de búsqueda con la cantidad de ámbitos que tienes.

Cuando se selecciona un alcance diferente, puede buscar entidades diferentes.

Esto funciona porque hice una aplicación como esta!

¡Los usuarios también tendrían más facilidad para separar los dos datos diferentes!