Archive

Archive for the ‘Apple’ Category

Technical Forum

January 12th, 2010

Salve a tutti,

come spero già saprete, giovedì avrò il piacere di tenere un technical forum incentrato sulle tecnologie Apple: cocoa e cocoa touch.

Sarebbe un’occasione splendida per incontrare gli amici e colleghi amanti della piattaforma (e non solo loro ovviamente!!).

Author: gennaro.tangari Categories: Apple Tags:

iPhone e SQLite

November 10th, 2009

Una modalità molto comoda su iPhone/iPod Touch per gestire una piccola base dati locale è quella d’usare SQLite, un piccolo ma potente db relazionale supportato nativamente dal cellulare di Cupertino.

Il primo passo è quello di creare un progetto di applicazione per iPhone OS, che per semplicità può essere una Window-based-Application. Successivamente sarà necessario aggiungere la libreria dinamica di SQLite: Target->Nome applicazione->tasto destro del mouse->Get Info e scegliere dal pannello successivo il tab general. A questo punto cliccando sull’icona “+” è possibile scegliere dalla lista la libreria desiderata, ovvero:

libsqlite3.0.dylib

ecco di seguito i passi successivi:

  • Creare a riga di comando o con uno dei vari tool grafici un DB SQLite ed aggiungerlo al progetto
  • “Copiare” programmaticamente il DB locale nella cartella “Documents” dell’iPhone:
NSArray * searchPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
  NSUserDomainMask, YES);
NSString * documentFolderPath = [searchPath objectAtIndex:0];
NSString * dbFilePath = [documentFolderPath
  stringByAppendingPathComponent:@"data.db"];

if (![[NSFileManager defaultManager] fileExistsAtPath:dbFilePath]) {
  NSString * backupDbPath = [[NSBundle mainBundle]
    pathForResource:@"data" ofType:@"db"];

  if (backupDbPath == nil)
    NSLog(@"Impossibile trovare il database originale!");
  else {
    BOOL copiedBackupDb = [[NSFileManager defaultManager] copyItemAtPath:
        backupDbPath toPath:dbFilePath error:nil];

    if (!copiedBackupDb)
      NSLog(@"Impossibile copiare il database originale!");
  }
}
  • Ora finalmente possiamo scrivere il codice per accedere ai dati contenuti nelle tabelle:
sqlite3 * db;
int dbrc;
const char * dbFilePathUTF8 = [dbFilePath UTF8String];

dbrc = sqlite3_open(dbFilePathUTF8, &db);
if (dbrc)
  NSLog(@"Non posso aprire il database!");
else {
  sqlite3_stmt * dbps;
  NSString * queryNS = [NSString stringWithString:@"SELECT * FROM mia_tabella"];
  const char * query = [queryNS UTF8String];

  if (sqlite3_prepare_v2(db, query, -1, &dbps, NULL) == SQLITE_OK) {
    while (sqlite3_step(dbps) == SQLITE_ROW)
      NSLog(@"%d %s", sqlite3_column_int(dbps, 0), sqlite3_column_text(dbps, 1));
  }
}

Ovviamente in ogni file sorgente in cui è necessario accedere alle API di SQLite è necessario importare l’header:

#include <sqlite3.h>

Il passo successivo potrebbe essere quello di usare il CoreData al posto di un accesso diretto al database, ma questa è un’altra storia :-)

Author: gennaro.tangari Categories: Apple Tags:

Nuova sezione Apple

November 2nd, 2009

Salve a tutti,

da oggi abbiamo una nuova sezione dedicata al mondo Apple e volevo quindi per prima cosa ringraziare per l’interesse mostrato Stefano e Mirko!

Nei giorni scorsi ho pensato che forse per un’azienda come la nostra potrebbe essere interessante buttare l’occhio anche sulle piattaforme di Cupertino, visti i recenti successi specialmente di iPhone/iPod Touch e l’attenzione per il mondo mobile in generele. Magari potremmo “contarci” e verificare se esiste tra di noi un pubblico interessato a partecipare a qualche evento dedicato allo sviluppo con Objective C e Cocoa/CocoaTouch.

Un saluto a tutti

Gennaro E. Tangari

Author: gennaro.tangari Categories: Apple Tags: