NSString или целочисленный атрибут - это логический выбор, хотя вы можете использовать трансформируемый атрибут для хранения всего, что вам нужно (что, конечно, может быть соответствующим образом сериализовано). Инкрементное целое число, вероятно, достаточно хорошо для многих применений, но каждый вариант использования отличается. В сети существует множество алгоритмов для генерации UUID строк или байтовых массивов (начнем с Google). NSString UUID довольно прост:
+(NSString*)UUIDString {
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return [NSMakeCollectable(string) autorelease];
}
для массива байтов, посмотрите на CFUUIDGetUUIDBytes()
.
Прежде чем идти по этому пути, подумайте долго и усердно о том, нужно ли это. Люди с точки зрения SQL «хотят» свои идентификаторы, но Core Data не относится к реляционным базам данных. Это инфраструктура управления графами объектов, которая использует SQLite в качестве одной из базовых реализаций. Если вы пытаетесь делать что-то похожее на SQL в Core Data, вы будете бороться с фреймворком. Часто требуется правильное использование отдельного свойства id для правильного использования платформы Core Data.