Comment générer un identifiant unique?
J'ai besoin de générer de la valeur int qui ne serait jamais répéter (au moins théoriquement). Je sais qu'il est arc4random() fnc mais je ne suis pas sûr de la façon de l'utiliser avec une certaine date actuelle ou qch 🙁
- Ce serait mal avec
return counter++
? Va générer la gamme complète des services de renseignements avant d'avoir à le répéter. - Combien de fois allez-vous être la génération de ce type int valeur qui serait théoriquement jamais de les répéter? Une fois la première application est lancée? Une fois par le lancement, ou à plusieurs reprises chaque fois que l'application est lancée.
- J'ai besoin de générer des ID unique pour chaque match. Après plus de jeu, je suis à jour de score tableau avec le top 10 des objets de la partition (joueur, score, mode et gameID). Il est Highscore UIViewController qui lit des données (pas devient comme argument) à partir de NSUserDefaults. J'ai besoin pour mettre en surbrillance l'utilisateur actuel gameplay. Pour le bien de code clearity et simplicité, il serait préférable de disposer d'une telle identification.
Vous devez vous connecter pour publier un commentaire.
Cela renvoie une clé unique, très semblable à UUID généré dans MySQL.
ARC version:
__bridge_transfer
au lieu de__bridge
?NSArray
, alors si il crée un double, vous pouvez simplement garder l'appel de la méthode jusqu'à ce qu'il crée une nouvelle chaîne d'identification unique?Une version simple pour générer des UUID (iOS 6 ou version ultérieure).
Objective-C:
Swift 3+:
Il va générer quelque chose comme 68753A44-4D6F-1226-9C60-0050E4C00067, qui est unique à chaque appel de cette fonction, même à travers de multiples dispositifs et les lieux.
De référence:
https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSUUID_Class/Reference/Reference.html
Si vous utilisez CoreData pour enregistrer les jeux joués,
NSManagedObject
'sobjectID
devrait servir vos fins, sans effort supplémentaire.Vous pouvez utiliser le temps (en millisecondes) ou d'une manière plus avancée GUID.
Vous pouvez créer une catégorie de UIApplication , UIDevice ou que vous visez plutôt comme cet ARC (exemple)
UUID () cette fonction
cela génère un identifiant unique stocké dans la NSUserDefault pour être réutilisée à chaque fois que la demande en ont besoin - Ce identificateur unique liées à l'application installe pas à l'appareil, mais peut être utilisé par exemple pour prendre de trace sur le nombre d'appareils souscrit le service APN etc...
Après que vous pouvez l'utiliser de cette façon:
Un simple timestamp (millisecondes * 10) devrait faire l'affaire:
Vous n'avez pas dire qu'il doit être aléatoire. Alors pourquoi ne pas commencer avec un certain nombre, et puis il suffit d'ajouter 1 pour le dernier numéro que vous avez généré.
Cette méthode devrait vous donner au moins 4 milliards de numéros uniques pour commencer:
Si vous avez un NSDictionary, vous pouvez générer une progressive id à partir de la question:
Vous devez être prudent, surtout si vous utilisez l'incrément de 1 routines, que si votre application est supprimé et rechargé sur l'iDevice, que vous n'avez pas enregistré votre numéro par défaut plus. Il va recommencer depuis le début. Si vous êtes utilisateur de stockage des partitions, vous voudrez peut-être enregistrer leur plus grand nombre aussi. Préférable de vérifier les routines de temps pour les secondes (ou millisecondes) après une certaine date. Le GUID mentionné ci-dessus est trop bonne, si vous avez besoin de ce genre de singularité.