objective-c core-data ios5 nsfetchrequest

objective c - ¿Cómo puedo guardar objetos JSON en Core Data?



objective-c core-data (4)

Lo más probable es que sus datos JSON se conviertan en NSDictionary o NSArray (o alguna combinación de los dos). Simplemente extraiga las claves / valores de la estructura JSON y agréguelos a su clase de entidad.

Soy un experto en Core Data, he diseñado una aplicación basada en navegación y algunos de los datos que uso se crean en tiempo de ejecución (provienen de una URL a través de JSON). Tomé algunos tutoriales y busqué durante casi un día, pero aún no me he dado cuenta de cómo guardar los datos JSON entrantes en la entidad (¿o evento?) En mi modelo de datos centrales. Busco los datos en la clase DetailViewController y necesito guardar estos datos en Core Data (he preparado una entidad con 7 propiedades). ¿Alguien puede ayudarme? (Si conoces un buen tutorial o código de ejemplo estaré encantado)

EDITAR Esto puede ser un poco específico, pero realmente tengo problemas y necesito solo un poco de ayuda. Mis datos llegan a la aplicación desde un tipo de servidor tranquilo (lo escribí en PHP), en primer lugar, el usuario ingresa su información de inicio de sesión (que he guardado en la base de datos en el servidor) y cuando los datos de respuesta vienen, utilizaré diferentes elementos del mismo en diferentes vistas (por ejemplo, el user_id se usará en una vista y el buttonData etc. en otras vistas). Mi pregunta es, ¿cómo voy a guardar los datos JSON en mi modelo de datos básicos (tiene entidades de árbol por el momento). Gracias por adelantado

Nota: Lloré mucho pero no pude encontrar ninguna respuesta ni tutorial sobre una aplicación como la mía


Le sugiero que use esta biblioteca: https://github.com/TouchCode/TouchJSON Y luego, si quiere hacer una fábrica para analizar json y alimentar los datos de su código, puede usar selectores para llamar a los métodos para llenar todos sus atributos.


La mejor manera de hacerlo sería crear entidades correspondientes a la estructura JSON. Lo más fácil fue cuando cada objeto JSON se convierte en una entidad, y las matrices se convierten en matrices de entidades. Sin embargo, sea razonable y no introduzca demasiados excesos para los subobjetos JSON que son esencialmente parte de su superobjeto.

Cuando haya creado entidades, puede comenzar con el análisis sintáctico y la traducción. Utilice un marco JSON (a partir de iOS5 hay uno de Apple) y analice la cadena JSON en el árbol de objetos, donde el elemento raíz es un NSArray o NSDictionary, y los subelementos serán NSArray, NSDictionary, NSNumber, NSString o NSNull.

Examínelos uno a uno en bucles iteracionales y asigne los valores correspondientes a los atributos de su entidad de datos central. Puede hacer uso de NSKeyValueCoding aquí y evitar demasiada asignación manual de los nombres de los atributos. Si sus atributos JSON tienen el mismo nombre que los atributos de la entidad, podrá examinar todos los elementos del diccionario y analizarlos en atributos del mismo nombre.

Ejemplo

Mi código de análisis en la situación similar fue el siguiente:

NSDictionary *parsedFeed = /* your way to get a dictionary */; for (NSString *key in parsedFeed) { id value = [parsedFeed objectForKey:key]; // Don''t assign NSNull, it will break assignments to NSString, etc. if (value && [value isKindOfClass:[NSNull class]]) value = nil; @try { [yourCreatedEntity setValue:value forKey:property]; } @catch (NSException *exception) { // Exception means such attribute is not defined in the class or some other error. } }

Este código funcionará en una situación trivial, sin embargo, puede ser necesario ampliarlo, según sus necesidades:

  • Con algunos tipos de asignaciones personalizadas en caso de que desee que su valor JSON se coloque en un atributo de nombre diferente.
  • Si su JSON tiene sub-objetos o matrices de subobjetos, necesitará detectar esos casos, por ejemplo en setters, e iniciar un nuevo análisis de un nivel más profundo. De lo contrario, con mi ejemplo, se encontrará con la situación que asigna el objeto NSDictionary a un NSManagedObject.

No creo que sea razonable profundizar en estos asuntos más avanzados en el alcance de esta respuesta, ya que la ampliará demasiado.


Esta lib me ayuda mucho

Features

  • Asignación de atributos y relaciones a las rutas clave de JSON.

  • Transformación de valor utilizando objetos NSValueTransformer con nombre.

  • Preservación del gráfico de objetos.

  • Soporte para la herencia de la entidad

  • Trabajos viceversa