Libérez votre développeur d’applications internes Partie 22 : Création et sauvegarde d’entités

Vous avez une idée d’application mais vous n’avez pas les connaissances en programmation nécessaires pour commencer à la construire ? Dans cette série de blogs hebdomadaires, je vous emmènerai, en tant que non-programmeur, pas à pas dans le processus de création d’applications pour l’iPhone, l’iPod touch et l’iPad. Rejoignez-moi chaque semaine dans cette aventure, et vous verrez à quel point il est amusant de transformer vos idées en réalité ! Voici la partie 22 de la série. Si vous venez de commencer, consultez le début de la série ici. ( Ce post a été mis à jour avec Swift 1.2, Xcode 6.4, et iOS 8 ).

Dans les derniers articles de cette série, vous avez beaucoup appris sur la récupération d’entités dans une base de données à l’aide des données de base, et sur l’affichage des résultats dans une vue en tableau. Maintenant que nous avons toutes les autres fonctionnalités qui fonctionnent dans la scène Write Review de iAppsReview , il est temps d’apprendre comment sauvegarder une ReviewEntity en utilisant Core Data !

Maîtrisez votre iPhone en une minute par jour :

Inscrivez-vous à la newsletter « Tip of the Day » de iphonologie et nous vous enverrons chaque jour un conseil pour gagner du temps et tirer le meilleur parti de votre iPhone ou iPad.

Pour suivre les étapes de ce billet, vous pouvez utiliser le projet iAppsReview que vous avez créé jusqu’à présent. Si vous avez besoin d’une nouvelle copie du projet, vous pouvez la télécharger à ce lien .

Entités d’épargne

Comme je l’ai déjà mentionné, il est facile de sauvegarder des entités dans une base de données, en particulier si vous utilisez la classe d’emballage mmBusinessController . Examinons de plus près cette classe pour en savoir plus sur la façon dont les entités sont sauvegardées.

  1. Ouvrez le projet iAppsReview dans Xcode.
  1. Allez dans le navigateur de projet, développez le groupe Business Layer , puis cliquez sur le fichier mmBusinessObject.swift pour l’ouvrir dans l’éditeur de code.
  1. Trouvons la méthode saveEntities . Lorsque vous avez un gros fichier de code avec de nombreuses méthodes, la façon la plus simple de procéder est d’utiliser la barre de saut en haut de l’éditeur de code. Comme le montre la figure 1 , cliquez sur la toute dernière section de la barre de saut.

Figure 1 – Cliquez sur la dernière section de la barre de saut.

  1. Dans la liste contextuelle qui apparaît lorsque vous cliquez sur la barre de saut, sélectionnez saveEntities comme indiqué dans Figure 2 .

Figure 2 – La liste déroulante de la barre de saut

En sélectionnant cette méthode dans la liste contextuelle, vous arrivez à l’endroit du fichier de code où se trouve la méthode, comme indiqué dans la figure 3 .

Figure 3 – La méthode saveEntities

Examinons de plus près ce code. La première ligne du code déclare quelques variables locales.La ligne de code suivante fait référence au contexte d’objet du contrôleur d’entreprise. Comme vous l’avez appris dans un article précédent, le contexte d’objet garde une trace de toutes les entités qui sont récupérées dans la base de données ainsi que de toutes les entités nouvellement créées. Il suit toutes les modifications apportées à ces entités et peut enregistrer toutes les modifications apportées aux entités de la base de données sur un appareil iOS.

La ligne de code suivante est illustrée dans la figure 4 .

Figure 4 – Les principaux messages passés au contexte de l’objet pour sauver les entités

Ce code appelle d’abord la méthode hasChanges sur le contexte de l’objet. Si cette méthode renvoie false , la sauvegarde est annulée (car dans Swift, l’opérateur && n’évalue pas la condition de droite si la condition de gauche est fausse).

Si la méthode hasChanges renvoie true , alors la save : est appelée dans le contexte de l’objet. Le contexte d’objet enregistre alors les modifications apportées à tous les objets d’entité nouveaux et modifiés.

En passant, vous vous demandez peut-être quelle est l’esperluette ( & ) devant le paramètre d’erreur . Normalement, dans Swift, la valeur d’un argument est passée dans une méthode. Cependant, si vous faites précéder l’argument d’une esperluette, un pointeur vers l’argument est passé. Il est passé de cette façon pour que le sauve : puisse modifier la valeur de l’argument d’erreur et que la nouvelle valeur soit disponible pour la méthode appelante.

Si la méthode retourne faux, le premier ensemble de code dans les accolades s’exécute. Les informations d’erreur sont stockées dans les variables saveState et saveMessage et ces valeurs sont renvoyées à l’appelant.Si tout se passe bien et que le save : renvoie true , la méthode définit les valeurs des variables saveState et saveMessage indiquant que la sauvegarde a été effectuée avec succès, puis renvoie ces valeurs à l’appelant.

Création d’une nouvelle entité

Dans la scène Write Review de l’application iAppsReview , nous devons effectuer les étapes suivantes lorsque l’utilisateur clique sur le bouton Post :

  1. Créer un nouvel objet ReviewEntity .
  2. Obtenir les valeurs à partir des contrôles de l’interface utilisateur 2 les stocker dans les propriétés de l’objet ReviewEntity .
  3. Sauvegardez l’objet ReviewEntity .
  4. Publiez la revue sur le web (nous y reviendrons plus tard dans cette série).

La classe mmBusinessObject possède une méthode createEntity que nous pouvons utiliser pour créer un nouvel objet ReviewEntity . Jetons un coup d’œil dans les coulisses de cette méthode.

Cliquez sur le segment le plus à droite dans la barre de saut de l’éditeur de code, et sélectionnez createEntity dans la liste ( Figure 5 ).

Figure 5 – Sélectionnez la méthode createEntity .

Vous devriez maintenant voir le code de la méthode createEntity indiqué dans Figure 6 (J’ai divisé le code en trois lignes distinctes pour le rendre plus lisible.)

Figure 6 – Le code de la méthode createEntity

Le code de cette méthode appelle le insertNewObjectForEntityForName:inManagedObjectContext : sur la classe NSEntityDescription . Cette méthode accepte deux paramètres. Le premier est le nom de la classe de l’entité (que nous récupérons simplement de l’objet contrôleur d’activité) et une référence au contexte de l’objet (que nous récupérons également du contrôleur d’activité.) Un objet de type T est renvoyé par cette méthode, et il est simplement renvoyé par la méthode createEntity . Dans cet exemple de code, T est un caractère générique pour un type d’objet entité plus spécifique. Nous parlerons plus en détail des génériques plus tard dans cette série !

Dans la terminologie orientée objet, nous appelons cela une méthode d’usine parce qu’elle fabrique, ou crée des objets.

Le code utilisé dans cette méthode est le code standard de données de base. Je veux vous faire comprendre que lorsque vous utilisez la classe mmBusinessObject , vous utilisez en fait un code Core Data standard.

Mise en œuvre du nouveau code de sauvegarde

Maintenant que vous avez compris les bases de la création et de la sauvegarde des entités, implémentons ce code dans le projet iAppsReview .

  1. Dans le navigateur de projet, sélectionnez le fichier WriteReviewViewController.swift pour l’afficher dans l’éditeur de code.
  2. Utilisez la barre de saut de l’éditeur de code pour sélectionner le postReview : .
  3. Vous devriez voir le postReview : code de méthode indiqué dans Figure 7 .

Figure 7 – Le postReview : code de la méthode

Il s’avère que j’ai déjà mis en place le code nécessaire pour vous ! Nous avons modifié ce code dans mon précédent billet sans y regarder de trop près.

La première ligne de code crée un nouvel objet ReviewEntity . Les lignes de code suivantes reprennent les valeurs des différentes interfaces utilisateur et les enregistrent dans les propriétés de l’objet ReviewEntity . Ensuite, la méthode saveEntities est appelée sur le contrôleur commercial Review , qui enregistre la nouvelle entité dans la base de données. Enfin, un popViewControllerAnimated : est appelée sur le contrôleur de navigation, ce qui provoque le retour de l’application à la scène principale iAppsReview .

Tester le code

Il est maintenant temps de prendre le code pour un essai de conduite.

  1. Dans Xcode, cliquez sur le bouton Exécuter .
  2. Lorsque l’application apparaît dans le simulateur, cliquez sur l’option Écrire un commentaire .
  3. Dans la scène Write Review , sélectionnez une App Category et rating, et entrez un App Name , et commentaires. Lorsque vous faites cela, le bouton Post devrait devenir actif comme le montre l’exemple de la Figure 8 . N’oubliez pas que vous pouvez cliquer sur l’arrière-plan de la scène pour masquer le clavier !

Fig 8 – Le bouton Post est activé.

  1. Cliquez sur le bouton Post . Le code dans le postReview : s’exécute comme en témoigne le fait que l’application navigue vers la scène principale de iAppsReview .

Comment savoir si l’examen a été enregistré dans la base de données ?

Votre devoir à la maison

Mon objectif avec cette série de blogs est de vous apprendre à écrire des applications par vous-même. Un véritable test de votre capacité est d’écrire du code sans avoir à vous entraîner. Dans cette optique, j’ai un devoir à vous confier.

La scène My Reviews dans iAppsReview est destinée à afficher les avis que vous avez enregistrés sur votre appareil iOS. Actuellement, cette scène est encore un prototype, qui affiche des informations statiques sur les avis. Votre mission consiste à convertir My Reviews en une scène pleinement fonctionnelle qui récupère les avis dans la base de données et les affiche sous forme de tableau.Tout ce que vous devez savoir sur la récupération et l’affichage des entités dans une vue en tableau se trouve dans ce billet.

Après avoir terminé la scène Mes revues , j’aimerais que vous passiez à la scène Revue . Cette scène s’affiche lorsque vous touchez une ligne dans la vue du tableau Mes commentaires et affiche les détails du commentaire. Pour que cela fonctionne, vous allez devoir passer un objet ReviewEntity de la scène My Reviews à la scène Review . Tout ce que vous devez savoir sur la transmission de données entre les contrôleurs de vue se trouve dans ce billet.

Vous pouvez également consulter le code dans les fichiers de code WriteReviewViewController et AppCategoryViewController pour obtenir des conseils sur la façon d’effectuer ces tâches.

Conclusion

Dans mon prochain billet, je donnerai la solution aux devoirs de ce billet. Vous verrez que le fait de résoudre ces problèmes par vous-même vous aidera à apprendre les bases de la programmation d’iOS, et vous montrera ce que vous comprenez vraiment et où vous avez besoin d’un peu plus d’aide. Bon codage !

Crédit image du haut : Alexey Boldin / Shutterstock.com

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *