¿Se pueden usar los objects de la class NSManagedObject como models?

Tengo un poco de confusión al elegir si utilizar objects de class NSManagedObjet directamente como models o si crear classs separadas para models y crear correlacionadores de datos para asignar datos de esta class de model a objects de class NSManagedObject. ¿Hay algún daño en el uso de los objects Core Data como models? ¿Cuáles son los pros y los contras de ambos approches?

Gracias por adelantado,

Saludos,

tek3

Leí su pregunta y supongo que no está preguntando si utilizar NSManagedObject directamente o si subclass NSManagedObject, pero si debería tener su model como classs separadas que usan Core Data mediante methods explícitos escritos usted mismo.

Core Data está diseñado para actuar como la capa de model para su aplicación. No veo ningún beneficio real al tener sus propias classs de models, escribir una interfaz para ellos e implementarlos en la database detrás de escena, a less que realmente necesite la libertad de abandonar los datos centrales por completo en algún momento.

Te recomiendo que crees tus classs model como subclasss de NSManagedObject. Puede ampliarlos de la forma que considere necesaria más allá de lo que le proporcionan los datos principales, pero al mismo time, sus classs model tendrán todos los beneficios del dataframe básicos: fallas, almacenamiento en caching, garantías de integridad de datos, eliminación de cascadas, etc. La

Si solo usa NSManagedObject , no tendrá el beneficio de la conveniente "dot.notation" cuando se refiere a attributes y relaciones.

Además, tendrá que recuperar todos los valores con valueForKey y establecerlos con setValueForKey seguido de cadenas. Esto puede ser extremadamente propenso a errores y engorroso y el código resultante no es tan fácil como con la notación de puntos.

Finalmente, en sus classs de objects puede implementar todo tipo de funciones adicionales. ¿Dónde colocarías este código de otra manera? Recuerde el principio de encapsulación que ayuda a producir código independiente y reutilizable.