Ankit,
Aquí el tl; dr delgado: use datos básicos.
Aquí es la forma larga:
Mientras que usted podría utilizar muchos criterios para elegir entre los datos básicos, un ORM (FMDB) o llamadas sqlite directos, el coste real de esta elección viene de su tiempo para utilizarla, de Apple apoyo y apalancamiento de otros proyectos. (RESTKit, que asigna los servicios REST a Core Data, es popular en estos días.)
Por lo tanto, un gran porcentaje del tiempo, digamos 90 +% (una estadística inventada), la respuesta en iOS será usar Datos principales. ¿Por qué? Una vez que lo domine y construya algunos pequeños métodos auxiliares, Core Data lo mantendrá en un mundo de computación constante, el gráfico de objetos Objective-C. Core Data le enseñará cosas sobre cómo usar un lenguaje dinámico que ayudará a todos los demás aspectos de la programación de su iOS. Por lo tanto, eres más productivo. No luches contra el marco.
Si trae un esquema grande y complejo de base de datos SQLite & desde otra aplicación, puede ser rentable usar FMDB o SQLite. Pero lo dudo. Su tiempo escribiendo una sencilla aplicación de línea de comandos basada en Mac para migrar el DB a un Core Data DB es una tarea finita y simple. Es casi seguro que tendrá que volver a escribir la mayor parte de la lógica empresarial en Objective-C. (Sí, C++ y Objective-C++ son buenas tecnologías. ¿Su lógica de negocio de base de datos realmente se ha ajustado para funcionar en un dispositivo con memoria limitada? No lo creo.)
Core Data tiene un rendimiento muy alto. Es realmente bastante rápido. Solo tiene que usarlo de manera diferente a como usa un DB. En particular, casi siempre extrae los datos de la tienda y luego los refina usando predicados directamente en los diversos conjuntos y matrices.En los dispositivos iOS, donde el flash es sorprendentemente lento, esta estrategia de búsqueda excesiva es particularmente efectiva. De hecho, tienes mucha RAM en estos dispositivos, úsala para obtener rendimiento. (Sí, sé que esto es una aparente contradicción con mi anterior lógica de negocios portátil. Pero en realidad, el código portado desde un entorno de escritorio o servidor tiene muchas suposiciones implícitas sobre la velocidad del disco, la cantidad de memoria y la realidad de una máquina virtual con una tienda de respaldo, simplemente no funcionará bien en un dispositivo de memoria limitado por batería con un modelo de memoria funky. [Tampoco funcionará muy bien en los dispositivos Android.]) También se desnormalizarán los datos para simplificar mostrándolo en varios widgets UI para iOS y Mac OS X. Hay algunas aplicaciones en las que los datos centrales serán más lentos que una base de datos SQLite equivalente. Esos han sido detallados en otra parte. El principal reclamo es que las tareas en las que los ID se definen por las coincidencias de bases de datos ascendentes El rendimiento de Core Data es verdadero. Pero se puede mitigar de alguna manera mediante una indexación juiciosa y una sobrecarga.
Lo que hay que recordar sobre los dispositivos móviles también es que el tamaño de la base de datos, debido a que estos dispositivos móviles están en las hojas de internet, generalmente es de tamaño modesto. Por lo tanto, el rendimiento es más fácil de lograr. Es posible que muchas lecciones del mundo de los servidores no se apliquen a este mundo móvil alimentado por baterías.
En otras palabras, debe utilizar "todo" para usar Objective-C en iOS/Mac OS X, y obtendrá importantes beneficios de productividad al utilizar Core Data también.
Andrew
¿Qué datos está almacenando, cuánto están allí, qué tipo de recuperación necesita hacer, es editable por el usuario? – jrturton
Esa es mi pregunta. Me refiero a qué base debo decidir cuál usar y si hay alguna guía provista por Apple u otra persona ... o es algo que me llegará con el tiempo. –
Si necesita actualizar, insertar o eliminar muchas filas a la vez, Core Data no será una buena opción. – AechoLiu