2009-08-22 6 views
0

Je voulais créer une chaîne unique avec une longueur ne dépassant pas 15 caractères dans l'objectif C (ou avec l'aide de Iphone SDK 3.0). J'ai besoin de ceci pour la table de mysql. Je sais que l'incrément automatique de mysql fera pour la clef primaire mais j'ai vraiment besoin d'envoyer la clef unique de l'iPhone lui-même. Chaque disque dans ma table a dû avoir une clef unique.Créer Unique Chaîne Iphone SDK 3.0

La chaîne unique devrait être uniques et alphanumériques et 15 caractères max

de Merci à l'avance, Sridhar,

Répondre

1

Normalement, je recommanderais un UUID/GUID (comme NWCoder does in his link), mais un UUID est 16 octets de données brutes, donc il ne peut pas être exprimé dans 15 octets de données, beaucoup moins en 15 caractères alphanumériques.

Alors la question devient, comment "unique"?

Unique à la table serait simple, il suffit d'utiliser une valeur d'incrémentation et un entier non signé ou hexadécimal.

Unique au monde serait plus difficile. Vous pourriez vous rapprocher en générant un UUID, puis en le hachant avec MD5, puis en prenant autant de bits que possible et en le convertissant en base (10 + 26 + 26 pour la casse, ou 10 + 26 pour la casse) et en prenant les 15 premiers caractères.

Unique à l'utilisateur, mais (comme vous le décrivez plus tard) unique en présence de la connectivité non-Internet serait le plus facilement fait en générant simplement une chaîne aléatoire de 15 caractères alphanumériques. Cela serait probablement équivalent à la méthode UUID/MD5 ci-dessus - essentiellement, la probabilité de collision serait très faible, et étant donné que l'utilisateur n'aura qu'une poignée de déplacements, il n'y a pratiquement aucune chance de collisions (en supposant que le générateur de nombres aléatoires de manière appropriée).

1

Il y a une réponse simple à cette question qui vous manque. Chaque voyage a une clé primaire composée de deux nombres.

Lorsqu'un voyage est créé sur l'iPhone, il obtient un numéro unique (c'est-à-dire 1,2,3,4,5).

Lorsqu'un voyage est synchronisé avec le serveur, vous donne la iphoen un numéro spécial unique qui va à l'avant, à savoir si le numéro d'iphone est 10421, les numéros de voyage deviennent 10421,1, 10421,2, etc.)

Cela garantit que tous les identifiants sont toujours uniques.