2017-01-18 20 views
4

Вопрос: Есть ли способ, чтобы получить уникальный идентификатор NSDocument в применении документа на основе ™, который является стойким во время приложения перезапусков?NSDocument уникальный идентификатор



Примечание1 там определенно должен быть какой-то идентификатор, который не только fileURL, но что-то еще, потому что приложение хорошо работает с автосохранения и даже еще не сохраненных документов.

Note2: по некоторым причинам я не хочу генерировать и сохранять этот идентификатор в файле содержимого документа.

+0

Является ли ваш документ единым файлом или пакетом? Есть ли место для хранения метаданных? –

+0

@MichaelDautermann - это простой текстовый файл. – kisileno

+1

Связанный вопрос: [NSFileSystemFileNumber изменяется после изменения или обновления файла в объекте c] (http://stackoverflow.com/q/30187163/4244136) – Willeke

ответ

0

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

- (void) encodeRestorableStateWithCoder: (NSCoder *) coder { 
    [super encodeRestorableStateWithCoder: coder]; 
    [coder encodeObject: @{@"color":@"red"} forKey: @"OBJECT_KEY"]; 
} 

- (void) restoreDocumentWindowWithIdentifier: (NSString *) identifier 
             state: (NSCoder *) state 
          completionHandler: (void (^) (NSWindow *, NSError *)) completionHandler { 
    NSDictionary * restoredInfo = [state decodeObjectForKey: @"OBJECT_KEY"]; 
    [super restoreDocumentWindowWithIdentifier: identifier state: state completionHandler: completionHandler]; 
} 

Я думаю, что здесь можно сохранить сгенерированный UID, но это хранилище может быть не очень надежным.

2

Даже я не пробовал, я думаю, что расширенные атрибуты могут сделать работу:

uuid_t uuid; 
[[NSUUID new] getUUIDBytes:uuid]; 

int result = setxattr(path, "com.yourcompany.yourapp.yourattr", &uuid, sizeof(uuid), 0, 0); 

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

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

  • Нет связанных вопросов^_^