2009-07-21 8 views
6

Soy bastante nuevo en Objective-C y me preguntaba cuál era la mejor forma de administrar colecciones de tuplas. En C usaría una matriz 2D o una estructura.Administrar colecciones de tuplas en Objective-C

¿Debo crear objetos para contener estas tuplas? Parece exagerado solo para ordenar listas o ¿no hay una carga extra real generada por la inicialización de objetos?

Respuesta

12

definitivamente hay algo de sobrecarga en la generación de objetos. Para una pequeña cantidad de objetos, entonces el uso de estructuras de datos ObjC sigue siendo apropiado. Si tienes una gran cantidad de tuplas, las gestionaría en una matriz C de estructuras. Recuerde, Objective-C es realmente solo C. Es apropiado y común usar construcciones C en Objective-C (hasta cierto punto, aprender dónde ese punto es representa un hito importante para convertirse en un buen desarrollador de Objective-C).

Normalmente para este tipo de estructura de datos, probablemente habría crear un único objeto de Objective-C que logró toda la colección. Por lo tanto, los llamadores externos verían una interfaz Objective-C, pero los datos internos se almacenarían en una estructura C más eficiente.

Si es común tener acceso a muchas tuplas rápidamente, mi objeto de colección probablemente proporcione métodos "get" similares a [NSArray getObjects:range:]. Los métodos ObjC que comienzan con "get" indican que el primer parámetro es un puntero que será sobreescrito por el método. Esto se usa comúnmente para el acceso de alto rendimiento tipo C a cosas administradas por un objeto ObjC.

Este tipo de estructura de datos es exactamente la forma en que los desarrolladores ObjC fusionan la elegancia y facilidad de mantenimiento de ObjC con el rendimiento y simplicidad de C.

1

creo que tendrá que conformarse con un NSArray de objetos NSArray, o tal vez una NSArray de objetos NSDictionary. Siempre se puede rodar su propia clase, o lo hace de la manera que se hace en C.

1

Hay un par de maneras diferentes que usted puede ir sobre esto:

  1. CoreData. Si bien técnicamente no es una base de datos, puede comportarse como uno. Si no necesita persistencia entre las ejecuciones de la aplicación, considere usar el tipo de tienda NSInMemoryStoreType, a diferencia de un NSSQLiteStoreType u otra opción. Sin embargo, si usted va a querer unirse a tuplas juntos, usando CoreData será absolutamente no funcionar (esto, la OMI, es la razón principal por la CoreData es no una base de datos).
  2. Utilice una base de datos real. SQLite barcos en todos los Mac y el iPhone y es bastante fácil de usar si se utiliza como envolturas o FMDBSQLite Persistent Objects o PLDatabase o EGODatabase o la GTMSQLite wrapper by Google.
  3. Una tupla es en realidad solo una colección de pares clave-valor, por lo que podría simplemente usar un NSMutableArray de NSMutableDictionaries. Obviamente, no podrá usar la sintaxis de SQL ni las combinaciones/consultas que deba ejecutar usted mismo, pero esto definitivamente tendría la configuración más sencilla.
  4. escribir una clase tupla y almacenar las de un NSMutableArray (similar a # 3, simplemente hacer cumplir un conjunto común de atributos en sus tuplas).
+5

¿Por qué utilizar una base de datos para tener tuplas? – George