SQLite con UITableView (Parte II)

Share


(Los fuentes del ejemplo están disponibles en el pie del artículo).

En el artículo anterior ya dejamos preparado el fichero de recursos con nuestro Navigation Controller que se encargará de mostrarnos el navegador de vistas (en principio solo tenemos una), también creamos nuestro fichero de base de datos, y nuestra clase DataViewController que será la encargada de gestionar y mostrar dichos datos. La conexión con la base de datos se realizará en nuestra clase delegada de la aplicación.

CLASE INMUEBLE

Ahora vamos a crearnos una nueva clase (Inmueble), que nos servirá de estructura para el tratamiento de nuestros registros de la base de datos. Será una clase sencilla (NSObject) donde incluiremos como miembros de la misma los distintos campos de nuestra tabla. Estos miembros serán del mismo tipo que hayamos definido en la creación de nuestra tabla y para nuestro caso hemos creado 3 campos (dirección, teléfono y comentarios).

@interface Inmueble : NSObject

{

sqlite3 *database;

NSInteger primaryKey;

NSString *address;

NSString *phone;

NSString *comment;

}

El miembro database veremos que será utilizado para recibir la base de datos que en nuestra clase delegada de la aplicación crearemos y abriremos. Implementaremos los métodos set y get de dichos miembros para consultar y asignar valores a nuestros campos. (Lógicamente el campo primaryKey no tiene método set, ya que es el campo autonumerico identificador).

- (NSInteger)primaryKey

- (NSString *)address

- (void)setAddress:(NSString *)aString

- (NSString *)phone

- (void)setPhone:(NSString *)aString

- (NSString *)comment

- (void)setComment:(NSString *)aString

Para terminar con nuestra clase Inmueble, necesitamos un método que reciba la base de datos de la que antes hemos hablado, y realice una consulta SQL a nuestra tabla. En este método solo obtendremos el campo dirección (address) de nuestra tabla, que será el que mostremos en nuestro TableView.

- (id)initWithPrimaryKey:(NSInteger)pk database:(sqlite3 *)db

Recordemos la guía de referencia de SQLite que os dejé, pues en ella veremos el cometido de los métodos sqlite3_prepare_v2, sqlite3_bind_int y sqlite3_step que usaremos en el método initWithPrimaryKey para ir recogiendo el valor de nuestro campo address.

CLASE DATAVIEWCONTROLLER

Finalizamos la implementación de las clases de nuestro proyecto con la clase DataViewController, que será la encargada de mostrar los datos en el TableView. Lo único destacable en esta clase, además del método loadView son los método de UITableViewDataSource llamados numberOfSectionsInTableView, numberOfRowsInSection y cellForRowAtIndexPath los cuales ya explicábamos en anteriores artículos (UITableView con índices).

CLASE DELEGADA DE NUESTRA APLICACIÓN

Como punto de entrada de nuestra aplicación, nuestra clase delegada será la encargada de preparar la base de datos, rellenar los datos apoyándonos en nuestra clase Inmueble y que nuestra clase DataViewController se encargue de rellenar en la vista. Aquí volvemos a encontrarnos con las funciones de SQLite para abrir nuestra base de datos, ejecutar consultas, etc.

Aplicación de ejemplo: buscapisos.zip

banner ad

15 Responses to “SQLite con UITableView (Parte II)”

  1. gabriel says:

    Hola, No me funcionan los botones y me tira una excepcion en tiempo de ejecucion.

  2. Antonio says:

    Hola Gabriel

    El ejemplo estaba sin terminar, ya que en esta segunda entrega tan solo pretendemos mostrar que la base de datos sea cargada en nuestro tableview. En los próximos días publicaré más artículos sobre el mismo ejemplo hasta llegar a terminarlo.

    Gracias.

  3. Gabriel says:

    Disculpa la ansiedad, tendrás algún código de fuente donde explique como retraer el teclado del textField ya que lo implemente viendo un video pero no funciono.
    Gracias, felicitaciones por la página esta muy buena.

  4. Antonio says:

    Cuando dices retraer te refieres a la aparición del mismo para empezar a escribir?

  5. Gabriel says:

    exactamente!

  6. Gabriel says:

    NO me confundi. Al presionar done o return no responde, quiero que desaparezca el teclado para poder seguir trabajando en el view.

  7. Antonio says:

    Gabriel, prueba esto en tu clase controladora

    - (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
    // Cuando el usuario presiona Return, el teclado debe desaparecer
    return YES;
    }

    Si no funciona, publicaremos un artículo de forma conjunta para explicar como se hace.

  8. gabriel says:

    Hola, con respecto al teclado ese metodo es el que buscaba, pero tengo problemas con el simulador y hay veces compila sin errores y la pantalla queda completamente en negro y luego me tira un cartel para ignorar o reportar(version beta 5), no entiendo a que se debe. Por otro lado hice un pequeno ejemplo que accede a una basedatos y muestra en una etiqueta el campo de un registro de la tabla, pero al compilar la aplicacion me tira error 1. Me gustaria si es posible subirte ese ejemplo para que me digas cual es error. Tambien me falta algo de concepto sobre los controles no entiendo cual es la diferencia entre un View y su controlador, a igual que el tabar y otros. Gracias.

  9. Antonio says:

    Hola Gabriel

    Enviamelo a antonio@iphonesoftware.es. Con respecto al error ese, intenta antes de compilar a limpiar la cache de datos del compilador, dejando pulsado el botón de build.

    Con respecto a tus dudas sobre los controles, te recomiendo que lo transmitas en el foro, ya que voy a utilizarlo como guia a la hora de publicar artículos.

    Una última cosa, sobre la diferencia entre el View y su controlador es conveniente que repases este artículo http://es.wikipedia.org/wiki/Modelo_Vista_Controlador donde lo explica muy bien.

    Te felicito por tu participación.

  10. gabriel says:

    Hola, con respecto al codigo que te pase pude solucionar el tema del error 1, era porque estaba incluyendo mal la libreria de sqlite(era un enlace o algo parecido).
    Queria consultarte en esta oportunidad como convertir un string obtenido por medio de sqlite_column(de un campo char de base de datos) a un NSString para ser mostrado en un label.
    Gracias.

  11. Antonio says:

    Hola Gabriel

    Me alegro de que se solucionase tu error.

    La forma de recuperar un campo de texto es de la siguiente manera :NSString *campo = sqlite3_column_text(consulta, nCampo) donde nCampo es la columna que queremos recuperar de nuestra consulta.

    Te recomiendo que consultes la web de referencia de SQLite3 que ya publicamos en nuestro anterior artículo http://www.iphonesoftware.es/sqlite-en-tu-iphone

    Igualmente aprovecho para invitarte a que realices consultas de este tipo en el foro ya que es la mejor manera de que todos participemos.

    Un saludo.

  12. gabriel says:

    OK gracias! la proxima va al foro.

  13. Clapp! says:

    Me gustaba mas cuando lo hacíais vosotros en lugar de copiarlotraducirlo de icodeblog.com

  14. Clapp! says:

    Me retracto de mi anterior comentario, solo vi el título por encima, ya veo que cambiáis bastantes cosas. Me he pasado de listo xD

  15. Antonio says:

    Se aceptan las disculpas…

Leave a Reply

  • Buy Cheapest diazepam Now 24/Internet)(safe Pharmacy. Best Online.
  • Buy Cheapest tramadol cod delivery Now Top Online Pharmacy. Best Drugstore.
  • Buy Cheap diuretics without prescription Now Best Internet. The Largest Internet Pharmacy.
  • Buy Cheapest valium online prescription Now Best Drugstore. Cheap Pharmacy Online.
  • ultram 50mg Online Without Prescription Best Prices. Pharmacy Store.
  • viagra suppliers Online Without Prescription Best Online. Pharmacy Store.
  • Buy Cheapest viagra on line pharmacy Now Cheap Pharmacy Online. Best Internet.
  • Buy Cheap valium without a precription Now Cheap Prescription Drugs. Guaranteed Shipping.
  • Buy Cheapest cialis overnight Now Special Prices For cialis overnight! Best Internet.
  • Buy Cheap cialis woman Now Online Medical Shop. Cheap Prescription Drugs.
  • Buy Cheap buy alprazolam now Now Cheap Online Pharmacy. Cheap Pharmacy Online.
  • Buy Cheap atorvastatin buy Online Best Drugstore. Online Prices For atorvastatin buy!
  • Buy Cheap sildenafil oral jelly Now Internet Prices For sildenafil oral jelly! Best Internet.
  • Buy Cheap nexium purchase Online No Prescription Needed. Best Drugstore.
  • Buy Cheapest viagra patch Online Cheap Prescription Drugs. Best Online.
  • Buy Cheap drug store pharmacy online Now Best Drugstore. Online Prices For drug store pharmacy online!
  • Buy Cheap what is the generic for viagra Online Internet Prices For what is the generic for viagra! Best Prices.
  • Buy Cheap where can i buy arthritis drugs Now Free Viagra Pills! No Prescription Needed.
  • Buy Cheapest weight loss medicine online prescrition Now Low Prices. Discount Pharmacy Online.
  • Buy Cheapest buy finasteride online Now Cheap Online Pharmacy. WorldWide Shipping.
  • Buy Cheapest infertility treatment drugs Online Cheap Online Pharmacy. Best Internet.
  • Buy Cheap levitra description Online Guaranteed Shipping. Top Online Pharmacy.
  • tadalafil soft tabs Online Without Prescription Pharmacy Store. Best Drugstore.
  • Buy Cheapest weight loss no prescription Now Best Prices. Drugs, Health And Beauty.
  • Buying Cheap cialis safety. Offshore Rx, Best Prices. Guaranteed Shipping.
  • Buy Cheapest zetia cost Now 100% Satisfaction Guaranteed. Best Online.
  • Buy Cheap order cialis online Now The Largest Internet Pharmacy. Low Prices.
  • Buy Cheap pain products Now Discount Pharmacy Online. Guaranteed Shipping.
  • Buy Cheapest levitra information Now Best Online. Internet Prices For levitra information!
  • Buy Cheapest generic cialis overnight delivery Now Free Viagra Pills! 24/Online Pharmacy.
  • Buy Cheapest side effects from viagra Online Low Prices. Internet Prices For side effects from viagra!
  • Buy Cheap chlamydia antibiotics Online WorldWide Shipping. Guaranteed Shipping.
  • Buy Cheapest online pharmacy in canada Online WorldWide Shipping. Free Viagra Pills!
  • Buy Cheap tramadol worldwide Online No Prescription Needed. Best Internet.
  • Buy Cheap levitra online order Online Discount Online Pharmacy. Pharmacy Store.
  • Buy Cheap buy generic levitra cheap Online Guaranteed Shipping. Cheap Online Pharmacy.
  • Buy Cheap muscle relaxants otc Now WorldWide Shipping. Discount Pharmacy Online.
  • Buy Cheapest pharmacy diflucan Now Cheap Pharmacy Online. Pharmacy Store.
  • Buy no prescription ultram Online Without Prescription. Best Drugstore. Low Prices.
  • Buy Cheapest promethazine side effects Online Best Internet. Drugs, Health And Beauty.
  • Buy Cheap drug store coupon Online The Largest Internet Pharmacy. Low Prices.
  • Buy Cheap vitamin shoppes Now Free Viagra Pills! Online Prices For vitamin shoppes!
  • Buy Cheap pain meds online without a prescription Now Low Prices. 24/Internet)(safe Pharmacy.
  • Buy Cheap foot pain products Online Top Online Pharmacy. 24/Online Pharmacy.
  • Buy Cheap 30 mg phentermine Now Pharmacy Store. The Largest Internet Pharmacy.
  • Buy Cheap products for back pain Now Free Viagra Pills! Cheap Pharmacy Online.
  • Buy Cheap antianxiety meds Now Free Viagra Pills! Online Medical Shop.
  • Buy Cheapest obesity self help Now Top Online Pharmacy. 24/Online Pharmacy.
  • Buy Cheap genric viagra Online WorldWide Shipping. Guaranteed Shipping.
  • Buy Cheapest soft tabs viagra Now Top Online Pharmacy. Online Medical Shop.
  • india drug sales on line Online Without Prescription Online Medical Shop. Low Prices.
  • Buy Cheap buy anti anxiety Online No Prescription Needed. Best Internet.
  • Buy Cheapest cialis generic overnight state united Online Buy Medications Online. Best Online.
  • Buy Cheap cialis gel Now Online Prices For cialis gel! Online Medical Shop.
  • Buy Cheap buy levitra us Online Best Online. Discount Online Pharmacy.
  • Buy Cheap mexico pharmacies Online Online Prices For mexico pharmacies! Best Drugstore.
  • Buy Cheap prescription weight loss drugs Now Order Cheap Meds Without Rx. Best Internet.
  • buy sildenafil citrate Online Without Prescription Best Prices. Best Internet.
  • Buy Cheap extreme weight loss Now WorldWide Shipping. 24/Online Pharmacy.
  • Buy Cheapest mexico levitra Online Best Internet. 24/Online Pharmacy.
  • Buy Cheap order inderal Now Best Drugstore. Discount Online Pharmacy.
  • Buy Cheapest ativan no prescription Now Special Prices For ativan no prescription! Best Internet.
  • Buy Cheapest buspar anxiety Now Top Online Pharmacy Supplier. Best Online.
  • rimonabant acomplia Online Without Prescription Best Prices. Best Online.
  • Buy Cheapest rx drugs without prescription Now Guaranteed Shipping. Cheap Online Pharmacy.
  • Buy Cheap energy diet pill Now Cheap Online Pharmacy. No Prescription Needed.
  • Buy Cheapest buy pain meds online without rx Now Free Viagra Pills! Buy Medications Online.
  • Buy Cheap lasix furosemide Online Low Prices. Drugs, Health And Beauty.
  • Buy Cheapest zovirax Online Guaranteed Shipping. Best Drugstore.
  • Buy Cheap mexican discount drugs Online Pharmacy At The Best Price! Best Drugstore.
  • Buy Cheap clomid ovulation day Now Buy Medications Online. Pharmacy Store.
  • Buy Cheap tablet zolpidem Now Low Prices. All Medications Are Certificated!
  • Buy Cheapest prescription clonazepam Now Low Prices. Pharmacy At The Best Price!
  • Buy Cheap viagra side affects Online Best Drugstore. Cheap Online Pharmacy.
  • Buy Cheap order tofranil Online Best Drugstore. Online Prices For order tofranil!
  • Buy Cheap tips for weight loss Now Discount Online Pharmacy. Pharmacy Store.
  • Buy Cheap ativan information Now Discount Online Pharmacy. WorldWide Shipping.
  • Buy Cheap pharmacies Online WorldWide Shipping. Guaranteed Shipping.
  • Buy Cheapest pain medication online pharmacy Now Low Prices. Online Prices For pain medication online pharmacy!
  • Buy Cheap india pharmacies Now Discount Online Pharmacy. Pharmacy Store.
  • Buy Cheapest cheap 10mg cialis without a prescription Now Cheap Pharmacy Online. Top Online Pharmacy.
  • Buy Cheap cost of viagra Online Cheap Online Pharmacy. Top Online Pharmacy.
  • Buy Cheapest cheapest phentermine online Now Best Online. Cheap Prescription Drugs.
  • Buy Cheap valium and driving Now Guaranteed Shipping. Cheap Pharmacy Online.
  • Buy Cheapest levitra dosing Online Best Drugstore. WorldWide Shipping.
  • Buy Cheap xanax withdrawals Now Cheap Prescription Drugs. Best Internet.
  • Buy Cheap buy prescription diet pills Now Free Viagra Pills! No Prescription Needed.
  • Buy Cheapest free trail of cialis Online Low Prices. Buy Medications Online.
  • Buy Cheap cialis free trials Now The Largest Internet Pharmacy. Best Prices.
  • Buy Cheap cialis buy Now The Largest Internet Pharmacy. Low Prices.
  • online prescription pharmacy Online Without Prescription Best Drugstore. Best Prices.
  • Buy Cheap cheap cialis pillstore Online Online Prices For cheap cialis pillstore! Low Prices.
  • Buy Cheapest impotent tadalafil softtabs Online No Prescription Needed. Best Drugstore.
  • Buy Cheap discount drugstore Online Best Online. Discount Pharmacy Online.
  • Buy Cheap generic cialis absolute lowest price Now 24/Online Pharmacy. Top Online Pharmacy.
  • Buy Cheap alprazolam overdose Online WorldWide Shipping. No Prescription Needed.
  • Buy Cheapest pills zoloft Now We Can Offer You Visit Our Online Pharmacy.
  • Buy order phentermine uk Without Prescription Doctor. Low Prices. Best Online.
  • Buy Cheap phentermine cod delivery Online Drugs, Health And Beauty. Best Prices.
  • Buy Cheap worlds strongest fat burner Now Buy Medications Online. Top Online Pharmacy.