Создать уникальный String Iphone SDK 3.0 - PullRequest
0 голосов
/ 22 августа 2009

Я хотел создать уникальную строку длиной не более 15 символов в задании C (или с помощью Iphone SDK 3.0).

Мне нужно это для таблицы MySQL. Я знаю, что автоинкремент mysql подойдет для первичного ключа, но мне действительно нужно отправить уникальный ключ с самого Iphone. Каждая запись в моей таблице должна иметь уникальный ключ.

Уникальная строка должна быть уникальный и буквенно-цифровой и максимум 15 символов

Заранее спасибо, Шридхар,

Ответы [ 3 ]

1 голос
/ 23 августа 2009

Обычно я бы порекомендовал UUID / GUID (как NWCoder делает в своей ссылке ), но UUID - это 16 байтов необработанных данных, поэтому его нельзя выразить в 15 байтах данных, а тем более 15 буквенно-цифровыми символами.

Так тогда возникает вопрос, насколько «уникален»?

Будет просто уникально только для таблицы, просто используйте инкрементное значение и беззнаковые целые или шестнадцатеричные данные.

Уникальный для мира будет более сложным. Вы могли бы приблизиться, сгенерировав UUID, затем хэшируя его с помощью MD5, затем взяв столько битов, сколько сможете, и преобразовав его в базовую (10 + 26 + 26 для чувствительного к регистру или 10 + 26 для нечувствительного к регистру) и приняв первые 15 символов.

Уникально только для пользователя, но (как вы опишете позже) уникально при наличии возможности подключения к Интернету проще всего сделать, просто сгенерировав случайную строку из 15 буквенно-цифровых символов. Скорее всего, это будет функционально эквивалентно методу UUID / MD5, описанному выше - по сути, вероятность коллизии будет очень очень мала, и, учитывая, что у пользователя будет только несколько поездок, шансов на коллизии практически нет (при условии, что вы запустили генератор случайных чисел соответственно).

1 голос
/ 24 августа 2009

Существует простой ответ на этот вопрос, который вам не хватает. Каждая поездка имеет первичный ключ, состоящий из двух чисел.

Когда на iphone создается поездка, он получает уникальный номер (т. Е. 1,2,3,4,5).

Когда поездка синхронизируется с сервером, вы назначаете iphoen специальный уникальный номер, который идет впереди, т. Е. Если номер iphone 10421, номера поездок становятся 10421.1, 10421.2 и т. Д.)

Это гарантирует, что все идентификаторы всегда уникальны.

0 голосов
/ 23 августа 2009

Этот другой ответ stackoverflow похож на это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...