2009-11-01 11 views
9

Soy nuevo en la plataforma iphone y estoy creando una aplicación que recupera un RSS Feed y lo muestra en un UITableView. He conseguido que esto funcione a la perfección (o más bien, como yo quería). Lo que estaba pensando era que almacenaría los elementos de alimentación actuales en el teléfono para que cargara inicialmente los elementos viejos que tenía almacenados mientras obtenía el nuevo feed, luego analizaba el nuevo feed y agregaba los nuevos elementos y actualizaba el TableView. Iba a utilizar Core Data para almacenar los elementos de feed anteriores porque sería una buena forma de aprender Core Data y sería un uso apropiado de Core Data. Sin embargo, estoy teniendo dificultades para aprender a usar los datos centrales y conectarlos con la tabla/matriz.Nuevo en Core Data para iphone

Ya busqué en google y busqué en stackoverflow para obtener tutoriales pero aún no he encontrado nada que lo explique de una manera que realmente entiendo. Cualquier explicación de los pasos generales que lleva agregar datos principales a una aplicación existente sería muy apreciada. Los detalles completos no son necesarios (pero también serían útiles). Simplemente no tengo mucha experiencia con el SQL o el almacenamiento de datos de esa manera y estoy teniendo problemas para entender cómo funciona todo el concepto de Core Data y cómo se conecta con todo.

Además, también se agradecerá cualquier método mejor para hacer lo que estoy tratando de lograr.

Respuesta

8

Existen plantillas Xcode para aplicaciones basadas en Core Data; estos son un gran comienzo para hacer que Core Data despegue. Sin embargo, parece que desea integrar datos básicos en su aplicación existente, por lo que necesita para ...

  • Añadir tres principales objetos de Datos Básicos: el contexto de objeto gestionado (MOC), el modelo de objeto gestionado (MOM) y el coordinador de tienda persistente (PSC). Estos deben estar disponibles donde desee que estén disponibles los Datos principales, por lo tanto, en su delegado de aplicación o, más preferiblemente, en el controlador o fuente de datos para su vista de tabla.
  • Crea una MOM en Xcode. Este será un archivo de tipo .xcdatamodel, y es un gráfico de objetos que define todas las entidades de datos centrales que desea en su aplicación.
  • Utilice NSFetchedResultsController (según lo sugerido por Louis Gerbarg) para obtener datos de Core Data y mostrarlos en su vista de tabla.
  • Agregue código en sus rutinas existentes de captación y análisis de RSS para almacenar nuevos objetos de Datos centrales nuevamente en la tienda, cuando corresponda.

Una buena manera de comenzar es simplemente crear una nueva aplicación de Datos de Núcleo y jugar con ella un poco; También puede consultar los fantásticos recursos de Apple sobre el tema, como el Core Data Programming Guide y las aplicaciones de muestra Recipes y Locations. (Es posible que se requiera registro de desarrollador.)

Una última cosa a tener en cuenta es que la mayor parte del código de Core Data que necesita agregar puede extraerse directamente de una de las aplicaciones de plantillas de Xcode y pegarse en su programa (esto es especialmente cierto para los accesores para los tres objetos de Datos principales que necesita). Sin embargo, tenga cuidado de no usar código que no comprenda.

3

Si está utilizando CoreData para llenar una UITableView, realmente desea usar NSFetchedResultsController en lugar de intentar llenar y sincronizar la matriz usted mismo. La documentación de NSFetchedResultsController incluye enlaces a varios tutoriales de CoreData, incluidas las fuentes que pueblan vistas de tabla.

1

NSFetchedResultsController sigue teniendo problemas y requiere soluciones frágiles. Comenzaría con el tutorial de "ubicación" de iPhone Core Data antes de pasar al tutorial de Libros.

+0

¿Puede ser más específico? Recuerdo varios errores que tienen algunas consecuencias bastante desagradables en 3.0, pero estoy bastante seguro de que NSFetchedResultsController es razonablemente estable y utilizable en 3.1. ¿Todavía hay problemas pendientes que simplemente no sé? – Tim

+0

Al mover filas, el controlador de búsqueda hace referencia a los índices intermedios de su matriz interna. Si dichos índices ya no existen, la posterior recarga de secciones provoca un bloqueo inmediato. –

1

Además, nada mejor método de hacer lo que estoy tratando de lograr también sería apreciar

sí, suena como base de datos podría ser excesiva para su aplicación. Suponiendo que sus elementos de alimentación se almacenan en un objeto de colección, puede usar fácilmente el built in serializaition de OSX.

0

Se ha observado en otras publicaciones de Stack-Overflow, pero puedo recomendar encarecidamente el libro de Prag Prog "Datos principales: API de Apple para datos persistentes en Mac OS X": la mayoría también es relevante para las aplicaciones de iPhone Core Data; hay un capítulo entero sobre cómo crear una aplicación para iPhone también.

http://pragprog.com/titles/mzcd/core-data