Swift - Enregistrement des meilleurs scores à l'aide de NSUserDefaults
Je suis en utilisant Swift pour faire un jeu. Je veux sauver les usagers score élevé à l'aide de NSUserDefaults. Je sais comment créer un nouveau NSUserDefaults variable dans mon AppDelegate fichier:
let highscore: NSUserDefaults = NSUserDefaults.standardUserDefaults()
Mais comment puis-je set/get c'est à mon avis contrôleurs?
N'utilisez pas de
Comment dois-je faire?
NSUserDefaults
, c'est pas vraiment ce qu'il a conçu, il n'est pas une base de données. Au lieu d'enregistrer un fichier avec NSArchiver
.Comment dois-je faire?
OriginalL'auteur user2397282 | 2014-08-12
Vous devez vous connecter pour publier un commentaire.
Au premier abord, NSUserDefaults est un dictionnaire (NSDictionary je pense). Chaque application a ses propres paramètres prédéfinis par l'utilisateur, de sorte que vous ne peut pas accéder à l'utilisateur par défaut à partir de n'importe quelle autre application.
Si l'utilisateur (celui qui joue à votre jeu) fait un nouveau record, vous devez enregistrer les meilleurs scores comme ceci:
Ensuite, lorsque vous souhaitez obtenir le meilleur score de l'utilisateur, vous avez à "lire" le score du dictionnaire comme ceci:
if let highscore = userDefaults.valueForKey("highscore") {
Vous voulez probablement objectForKey plutôt que valueForKey. Ce dernier passe par Valeur-Clé de Codage et peuvent avoir des comportements involontaires.
Selon cet article, vous ne devriez pas utiliser la synchronisation iOS 8 et les versions ultérieures.
syncronize il est seulement nécessaire lorsque l'utilisateur ne peut pas attendre pour se faire automatiquement.
Pourquoi cette réponse si populaire? Juste au sujet de chaque ligne est mauvaise. C'est à l'aide de mauvaises méthodes. N'utilisez pas de KVC à moins que vous ayez une claire et précise de la raison. Et vous n'avez pas besoin d'appeler
synchronize
. La réponse par jigar est d'utiliser la bonne Swift 2 API (sauf pour la création d'une nouvelle instance deNSUserDefaults
).OriginalL'auteur
Dans Swift 3.0
De l'épargne: les
récupération:
certains corps d'expliquer pourquoi il est downvoted. afin que je puisse m'améliorer.
Ne pas utiliser
UserDefaults value(forKey:)
lire laInt
. UtilisationUserDefaults integer(forKey:)
. N'utilisez jamais de KVC à moins que vous ayez une claire et précise de la raison.OriginalL'auteur
NSUserDefaults
. UtilisationNSUserDefaults.standardUserDefaults()
.OriginalL'auteur
Swift 4
Valeur De Consigne
UserDefaults.standard.set("TEST", forKey: "Key")
//setStringRécupérer
UserDefaults.standard.string(forKey: "Key")
//getStringSupprimer
UserDefaults.standard.removeObject(forKey: "Key")
OriginalL'auteur
Vous pouvez utiliser le morceau de code ci-dessous:
OriginalL'auteur