Являются ли NSManagedObject объектные идентификаторы уникальными в пространстве и времени как CFUUID? - PullRequest
1 голос
/ 21 января 2011

Документация NSManagedObjectID гласит:

Объект NSManagedObjectID - это компактный универсальный идентификатор управляемого объекта. Это формирует основу для уникальности в Core Data Framework. Идентификатор управляемого объекта однозначно идентифицирует один и тот же управляемый объект как между контекстами управляемого объекта в одном приложении, так и в нескольких приложениях (как в распределенных системах).

Перевод в моей голове: «Существует , вероятно, , что никакие два NSManagedObjectID не могут быть одинаковыми во всех экземплярах моего приложения».

Документация CFUUID гласит:

UUIDs ... являются 128-битными значениями гарантированно будет уникальным. UUID является сделано уникальным как в пространстве, так и во времени объединяя значение, уникальное для компьютер, на котором это было генерируется - обычно Ethernet аппаратный адрес - и значение представляющий количество 100-наносекундные интервалы с октября 15, 1582 в 00:00:00.

Перевод в моей голове: «Определенно 1018 * не существует, чтобы любые два CFUUID были одинаковыми во всех экземплярах моего приложения».

Тот факт, что NSManagedObjectID описываются как «универсальный идентификатор», делает меня почти уверенным в том, что они предлагают ту же уникальность, что и CFUUID, тогда как «уникальный в пространстве и времени» не оставляет абсолютно никаких сомнений. Может ли кто-либо с опытом работы с основными данными, чем я, подтвердить или опровергнуть мои мысли?

1 Ответ

2 голосов
/ 22 января 2011

Помимо уникальности, есть один случай, когда идентификатор объекта изменится, и это если вы запросите его перед сохранением объекта на диске.После сохранения у него будет другой идентификатор.Помимо этого, идентификатор не изменится.Я просто хотел указать на это, потому что это вызывало у меня некоторое замешательство, пока я не выяснил, что происходит.

Я не могу комментировать хэширование, используемое для генерации NSManagedObjectID, но это похоже на шансыиз него совпадающие с другим NSManagedObject являются ничтожно малыми, основываясь на просмотре сгенерированных идентификаторов.

...