Dans ce tutoriel, je vais montrer comment utiliser la classe NSUserDefaults afin de sauvegarder et de mettre à jour les paramètres de l'application. Au cours de ce processus, nous créerons une application de démonstration appelée "Contact" qui stockera une image et les informations de contact fournies par l'utilisateur..
Avec la classe NSUserDefaults, vous pouvez enregistrer des paramètres et des propriétés liés à des données d'application ou utilisateur. Par exemple, vous pouvez enregistrer une image de profil définie par l'utilisateur ou un jeu de couleurs par défaut pour l'application. Les objets seront enregistrés dans ce qu’on appelle le «système par défaut d’iOS». Le système par défaut iOS est disponible dans tout le code de votre application, et toutes les données enregistrées dans le système par défaut seront conservées pendant les sessions d'application. Cela signifie que même si l'utilisateur ferme votre application ou redémarre son téléphone, les données enregistrées seront toujours disponibles lors de la prochaine ouverture de l'application.!
Avec NSUserDefaults, vous pouvez enregistrer des objets des types de classe suivants:
Si vous souhaitez stocker un autre type d'objet, tel qu'un UIImage, vous devrez généralement l'archiver ou l'envelopper dans une instance de NSData, NSNumber ou NSString..
Maintenant que vous en savez un peu sur ce qui peut être fait avec NSUserDefaults, passons à l'apprentissage de l'utilisation du système par défaut avec un exemple d'application simple qui stockera les informations de contact..
Ouvrez Xcode et sélectionnez? Créer un nouveau projet Xcode?. Sélectionnez une application basée sur les vues et cliquez sur Suivant. Entrez un nom pour votre projet (j'ai appelé le mien? Contact?). Entrez votre identifiant d'entreprise et assurez-vous de sélectionner l'iPhone pour la famille de périphériques, car nous allons créer une application pour iPhone. Si vous avez terminé, cliquez sur Suivant. Choisissez un emplacement pour enregistrer votre projet, puis cliquez sur Créer..
Dans le? Contact? dossier dans le? Navigateur de projet? cliquez sur ContactViewController.xib.
Faites glisser trois UITextFields de la bibliothèque vers la vue et organisez-les comme ci-dessous. Faites la même chose avec un UIImageView et deux boutons Round Rect.
Cliquez sur Le premier TextField et tapez? Prénom? dans le champ de texte Placeholder. Maintenant, cliquez sur le deuxième TextField et tapez? Nom? dans le champ de texte Placeholder. Enfin, cliquez sur le troisième et dernier TextField et tapez? Age? dans le champ de texte Placeholder. Pour le type de clavier, sélectionnez Pavé numérique, car vous aurez seulement besoin de chiffres pour entrer votre âge..
Remplacez le texte du premier bouton par? Save? et le texte du deuxième bouton pour? Choisir Image?.
Nous allons maintenant faire les liens. Xcode 4 propose un nouveau moyen simple et rapide de le faire. Sélectionnez le bouton du milieu de l'éditeur pour afficher? Assistant editor?.
Cliquez sur le prénom TextField et faites glisser CTRL vers l'interface. Un pop-up va montrer, entrez? FirstNameTextField? pour le nom et cliquez sur "connecter".
Faites la même chose avec le champ de texte Last name et age et le UIImageView, mais appelez-les lastNameTextField, ageTextField et contactImageView. Pour les boutons, nous devons changer la connexion en Action au lieu de Sortie. Donc, faites glisser CTRL du bouton de sauvegarde vers l'interface, mais cette fois sous les accolades. Changez la connexion en action et entrez? Save? pour le nom. Faites de même avec le bouton Choisir une image, mais cette fois entrez? Choisissez Image? pour le nom. Maintenant, le code de ContactViewController.h devrait se lire comme suit:
#importation@interface ContactViewController: UIViewController IBOutlet UIImageView * contactImageView; IBOutlet UITextField * firstNameTextField; IBOutlet UITextField * lastNameTextField; IBOutlet UITextField * ageTextField; - (IBAction) save: (id) expéditeur; - (IBAction) choisissez Image: expéditeur (id); @fin
Nous en avons terminé avec l'interface. Cliquez sur Build and Run pour voir s’il fonctionne correctement. Entrez du texte et fermez l'application. Si vous ouvrez à nouveau l'application, vous verrez probablement que le texte que vous avez entré est toujours là. Si tel est le cas, cela est dû à la fonctionnalité multitâche intégrée d'iOS. Si vous supprimez l'application de la barre multitâche et ouvrez-la à nouveau, vous verrez que le texte que vous avez entré est parti. Dans ce tutoriel, nous utiliserons NSUserDefaults pour enregistrer les informations saisies, même si vous êtes vraiment? fermez l'application. Cela permettra aux données de persister pendant plusieurs sessions..
Revenez au mode d'édition standard afin de disposer de plus d'espace pour travailler. Ouvrez ContactViewController.h et ajoutez le UIImagePickerControllerDelegate et le UINavigationControllerDelegate..
Si vous avez terminé, ouvrez le fichier ContactViewController.m et faites défiler jusqu'à l'action ChooseImage, puis modifiez le code comme suit:
- (IBAction) ChooseImage: (id) expéditeur UIImagePickerController * picker = [[[UIImagePickerController alloc] init] autorelease]; picker.delegate = self; picker.allowsEditing = YES; picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; [self presentModalViewController: sélecteur animé: YES];
Tout d'abord, nous créons un UIImagePickerController, puis nous définissons le délégué sur self. Ensuite, nous activons l'édition de l'utilisateur, puis définissons le type de source sur la photothèque, puis nous le montrons avec une animation à l'utilisateur..
Sous Choisir une action d'image, ajoutez les méthodes de délégué du sélecteur d'images suivantes:
#pragma mark - Délégué du sélecteur d'images - (void) imagePickerController: (UIImagePickerController *) sélecteur didFinishPickingImage: (UIImage *) éditeur d'imageInfo: (NSDictionary *) montageInfo contactImageView.image = image; [sélecteur licencierModalViewControllerAnimated: YES]; - (void) imagePickerControllerDidCancel: (UIImagePickerController *) picker [picker licedModalViewControllerAnimated: YES];
Dans la première méthode, nous définissons l'image contactImageView sur l'image sélectionnée, puis ignorons le UIImagePickerController. Dans la seconde méthode, nous ne renvoyons que le UIImagePickerController.
Vous pouvez enregistrer du texte avec la fonction: setObject: (id) forKey: (NSString *). La clé doit être une clé spécifique pour l'objet que vous enregistrez, car vous avez également besoin de cette clé pour obtenir les données enregistrées. Vous pouvez sauvegarder des entiers avec la fonction: setInteger: (NSInteger) forKey: (NSString *). Pour enregistrer l'image, nous devons d'abord créer une instance de NSData à partir de celle-ci..
Accédez à l'action de sauvegarde et modifiez le code pour qu'il se lise comme suit:
- (IBAction) save: (id) expéditeur // Masque le clavier [firstNameTextField resignFirstResponder]; [lastNameTextField resignFirstResponder]; [ageTextField resignFirstResponder]; // Crée des chaînes et des entiers pour stocker les informations de texte NSString * firstName = [firstNameTextField text]; NSString * lastName = [lastNameTextField text]; int age = [[ageTextField text] integerValue]; // Créer des instances de NSData UIImage * contactImage = contactImageView.image; NSData * imageData = UIImageJPEGRepresentation (contactImage, 100); // Stocke les données NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; [valeur par défaut setObject: firstName forKey: @ "firstName"]; [defaults setObject: lastName forKey: @ "lastname"]; [defaults setInteger: age forKey: @ "age"]; [valeur par défaut setObject: imageData forKey: @ "image"]; [synchroniser par défaut]; NSLog (@ "Données sauvegardées");
Nous cachons d'abord le clavier. Ensuite, nous créons des chaînes du texte que vous avez entré dans le champ de texte du prénom et du nom. Nous créons également un entier de l'âge que vous avez entré. Ensuite, nous stockons l'image de contactImageView en tant qu'objet NSData, car nous ne pouvons pas enregistrer un UIImage directement avec NSUserDefaults. Ensuite, nous stockons les données, nous appelons la fonction standardUserDefaults pour enregistrer les données. Enfin, nous synchronisons la base de données standardUserDefaults.
Nous voulons enfin obtenir les données sauvegardées. Nous faisons cela dans la méthode viewDidLoad, car cette méthode est appelée à l'ouverture de l'application. Faites défiler jusqu'à la? ViewDidLoad? méthode, décommentez-le et modifiez le code comme suit:
- (void) viewDidLoad // Récupère les données stockées avant le chargement de la vue NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; NSString * firstName = [defaults objectForKey: @ "firstName"]; NSString * lastName = [defaults objectForKey: @ "lastname"]; int age = [defaults integerForKey: @ "age"]; NSString * ageString = [NSString stringWithFormat: @ "% i", age]; NSData * imageData = [defaults dataForKey: @ "image"]; UIImage * contactImage = [UIImage imageWithData: imageData]; // Met à jour les éléments de l'interface utilisateur avec les données enregistrées firstNameTextField.text = firstName; lastNameTextField.text = lastName; ageTextField.text = ageString; contactImageView.image = contactImage; [super viewDidLoad];
Nous appelons d’abord la fonction standardUserDefaults afin d’obtenir les données sauvegardées. Nous mettons le prénom et le nom dans un NSString. Bien que l'âge soit un entier, nous créons une chaîne pour la stocker, car nous ne pouvons pas définir directement le texte d'un TextField sur un entier. Nous plaçons l'image dans un objet NSData, puis nous créons un UIImage à partir de l'objet NSData. Enfin, nous mettons à jour l'élément d'interface utilisateur avec les données enregistrées.
Maintenant que l'application est terminée, créez-la et exécutez-la à nouveau. Entrez vos données et sélectionnez une image. Fermez l'application à partir de la barre multitâche, puis ouvrez-la à nouveau. Les données devraient toujours être là cette fois, et si oui, notre application de démonstration fonctionne!
Merci d'avoir lu ce tutoriel sur NSUserDefaults! Si vous avez des questions ou des commentaires sur ce tutoriel, laissez-les dans la section commentaires ci-dessous.!
Et si vous souhaitez vous perfectionner en tant que développeur iOS, pourquoi ne pas consulter l'énorme gamme de modèles d'applications iOS sur Envato Market? Vous pouvez les utiliser comme base pour développer vos propres applications, inspecter le code vérifié par la qualité et en tirer des enseignements..
Ou parcourez les services de développement d'applications sur Envato Studio pour qu'une application soit créée pour vous du début à la fin.!
Services de développement d'applications sur Envato Studio