Partager via


Utilisation de données dans une application iOS

L’exemple DataAccess_Adv montre une application de travail qui autorise l’entrée utilisateur et les fonctionnalités de base de données CRUD (Créer, Lire, Mettre à jour et Supprimer). L’application se compose de deux écrans : une liste et un formulaire de saisie de données. Tout le code d’accès aux données est réutilisable dans iOS et Android sans modification.

Après avoir ajouté des données, les écrans d’application ressemblent à ceci sur iOS :

Liste d’exemples iOS

Détail de l’exemple iOS

Le projet iOS est illustré ci-dessous : le code présenté dans cette section est contenu dans le répertoire Orm :

Arborescence du projet iOS

Le code d’interface utilisateur natif pour les ViewControllers dans iOS est hors de portée pour ce document. Pour plus d’informations sur les contrôles d’interface utilisateur, reportez-vous au guide iOS Working with Tables and Cells .

Lire

Il existe quelques opérations de lecture dans l’exemple :

  • Lecture de la liste
  • Lecture d’enregistrements individuels

Les deux méthodes de la StockDatabase classe sont les suivantes :

public IEnumerable<Stock> GetStocks ()
{
    lock (locker) {
        return (from i in Table<Stock> () select i).ToList ();
    }
}
public Stock GetStock (int id)
{
    lock (locker) {
        return Table<Stock>().FirstOrDefault(x => x.Id == id);
    }
}

iOS affiche les données différemment en tant que UITableView.

Créer et mettre à jour

Pour simplifier le code de l’application, une seule méthode d’enregistrement est fournie qui effectue une insertion ou une mise à jour selon que la clé primaire a été définie ou non. Étant donné que la Id propriété est marquée avec un [PrimaryKey] attribut, vous ne devez pas la définir dans votre code. Cette méthode détecte si la valeur a déjà été enregistrée (en vérifiant la propriété de clé primaire) et insère ou met à jour l’objet en conséquence :

public int SaveStock (Stock item)
{
    lock (locker) {
        if (item.Id != 0) {
            Update (item);
            return item.Id;
    } else {
            return Insert (item);
        }
    }
}

Les applications réelles nécessitent généralement une validation (par exemple, les champs obligatoires, les longueurs minimales ou d’autres règles métier). De bonnes applications multiplateformes implémentent autant que possible la logique de validation dans le code partagé, en transmettant les erreurs de validation à l’interface utilisateur pour qu’elles s’affichent en fonction des fonctionnalités de la plateforme.

DELETE

Insert Contrairement aux méthodes etUpdate, la Delete<T> méthode peut accepter uniquement la valeur de clé primaire plutôt qu’un objet completStock. Dans cet exemple, un Stock objet est passé dans la méthode, mais seule la propriété Id est transmise à la Delete<T> méthode.

public int DeleteStock(Stock stock)
{
    lock (locker) {
        return Delete<Stock> (stock.Id);
    }
}

Utilisation d’un fichier de base de données SQLite prérempli

Certaines applications sont livrées avec une base de données déjà remplie de données. Vous pouvez facilement effectuer cette opération dans votre application mobile en expédiant un fichier de base de données SQLite existant avec votre application et en le copiant dans un répertoire accessible en écriture avant d’y accéder. Étant donné que SQLite est un format de fichier standard utilisé sur de nombreuses plateformes, un certain nombre d’outils sont disponibles pour créer un fichier de base de données SQLite :

  • SqLite Manager Firefox Extension : fonctionne sur Mac et Windows et produit des fichiers compatibles avec iOS et Android.
  • Ligne de commande : consultez www.sqlite.org/sqlite.html .

Lorsque vous créez un fichier de base de données pour la distribution avec votre application, veillez à nommer les tables et les colonnes pour vous assurer qu’elles correspondent à ce que votre code attend, en particulier si vous utilisez SQLite.NET qui s’attend à ce que les noms correspondent à vos classes et propriétés C# (ou aux attributs personnalisés associés).

Pour iOS, incluez le fichier sqlite dans votre application et vérifiez qu’il est marqué avec Action de génération : Contenu. Placez le code dans pour FinishedLaunching copier le fichier dans un répertoire accessible en écriture avant d’appeler des méthodes de données. Le code suivant copie une base de données existante appelée data.sqlite, uniquement si elle n’existe pas déjà.

// Copy the database across (if it doesn't exist)
var appdir = NSBundle.MainBundle.ResourcePath;
var seedFile = Path.Combine (appdir, "data.sqlite");
if (!File.Exists (Database.DatabaseFilePath))
{
  File.Copy (seedFile, Database.DatabaseFilePath);
}

Tout code d’accès aux données (que ce soit ADO.NET ou à l’aide de SQLite.NET) qui s’exécute une fois cette opération terminée aura accès aux données préremplies.