Pregunta

En mi aplicación de iPhone, proporciono a los usuarios una vista de las noticias de la industria. Obtengo esta lista como un archivo XML de mi servidor. Anular e insertar los datos XML en mi repositorio de datos básicos es obvio, pero hay algunos casos en los que podría obtener entradas duplicadas de noticias.

Pensé que una buena solución sería insertar todas las actualizaciones cuando proceso la alimentación XML y luego eliminar los duplicados. Pero no puedo entender cómo hacer lo último. ¿Cómo se elimina los objetos duplicados en el marco de datos principal de Apple?

Para hacer esto concreto, digamos que tengo una noticia:

Elemento de la noticia - UniqueID (establecido por el sistema externo) - Título - Newstext

¿Hay alguna forma sucinta de decirle a los datos del núcleo que simplemente elimine los objetos duplicados, donde un objeto duplicado se define como un objeto con el mismo "único"? Es decir, sin hacer una recuperación explícita en mi código y asegurarse de no insertar el objeto si un objeto está el mismo "único" ya existe?

¿Fue útil?

Solución

Core Data no admite la eliminación de "duplicados" porque la única noción de identidad de objetos es la NSManagedObjectID asignado a cada objeto. Como no puede configurar esta ID manualmente, no podrá usarla para una exclusiva en insertar. Tienes (al menos) dos opciones:

  1. Haga una búsqueda en el inserto, como sugiere. Las pruebas revelarán si esto es demasiado lento: hasta que lo pruebe, sin embargo, no asuma que esta solución no funcionará. Podría mejorar el rendimiento haciendo toda la inserción en un NSInMemoryPersistentStore Luego migra esta tienda persistente a una tienda permanente (en disco) para ahorrar. Si puede mantener todos los objetos insertados en la memoria, esto será muy rápido.

  2. Puede insertar todos los objetos, guardar, luego hacer una búsqueda y eliminar todos menos uno de los objetos. Una vez más, esto puede ser más desempeñado de lo que sospecha.

En ambos casos, la cantidad de código es mínima. Los instrumentos de datos principales en los instrumentos. APP será su mejor herramienta para juzgar el rendimiento de ambos enfoques.

Otros consejos

Si crea un atributo, uniqueID, en datos básicos únicos y no opcionales, no volverá a copiar el mismo elemento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top