2010-05-09 3 views
4

Что было бы лучшим способом назвать файл, связанный с NSManagedObject. Объект NSManagedObject будет содержать URL-адрес этого файла.Ссылка на файл на диске из NSManagedObject

Но мне нужно создать уникальное имя файла для моего файла. Есть ли какой-то идентификатор автоинкремента, который я мог бы использовать? Должен ли я использовать mktemp (но это не временный файл) или попытаться преобразовать NSManagedObjectId в имя файла? но я боюсь, что будут специальные символы, которые могут вызвать проблемы.

Что вы предложите?

EDIT: У меня есть много этих NSManagedObjects, и у каждого есть свой собственный образ, поэтому я хочу создать уникальное имя для каждого изображения.

ответ

2

Существует хороший способ сделать это, и один более ранний ответ почти имел это - сгенерируйте GUID для каждого изображения, а не для всего процесса. Вызовите этот метод всякий раз, когда вам нужна уникальная строка, а затем сохранить его в управляемом объекте:

+ (NSString *)getUUID 
{ 
    CFUUIDRef theUUID = CFUUIDCreate(NULL); 
    CFStringRef string = CFUUIDCreateString(NULL, theUUID); 
    CFRelease(theUUID); 
    return [(NSString *)string autorelease]; 
} 

Я использую это для хранения оцифрованных фильмов и изображений.

3

Вы можете использовать NSProcessInfo для сгенерировал GUID:

[[NSProcessInfo processInfo] globallyUniqueString] 

И ссылаться на файл, который я предложил бы просто держа Guid как NSManagedObject собственность, а затем просто ссылаться на файл с таким именем из каталога поддержки приложений.

+0

Спасибо. Тем не менее, у меня есть много этих NSManagedObjects. У всех есть изображения. Мой вопрос заключался скорее в том, как отличать изображения от разных NSManagedObjects. – Kamchatka

0

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

Я удивлен, чтобы не найти больше информации об этой теме в Интернете.

Смежные вопросы