Предотвратить предупреждение, когда файл NSDocument (программно) переименован

Мое приложение позволяет пользователю переименовывать документы, которые в данный момент открыты. Это тривиально и прекрасно работает, с одной действительно досадной ошибкой, которую я не могу понять. Когда файл переименовывается, AppKit (любезно) предупреждает пользователя, когда он в следующий раз попытается сохранить документ. Пользователь говорит «ОК», и все продолжается как обычно. Это имеет смысл, когда что-то внешнее по отношению к приложению изменило документ, но не тогда, когда это действительно было сделано самим документом.

Код выглядит примерно так:

-(void)renameDocumentTo:(NSString *)newName {
  NSURL *newURL = [[[self fileURL] URLByDeletingLastPathComponent]
                                   URLByAppendingPathComponent:newName];

  NSFileManager *fileManager = [NSFileManager defaultManager];
  [fileManager moveItemAtURL:[self fileURL] toURL:newURL];
  NSDictionary *attrs = [fileManager attributesForItemAtPath:[newURL path] error:NULL];

  [self setFileURL:newURL];
  [self setFileModificationDate:[attrs fileModificationDate]];
}

Можно было бы подумать, что явная установка нового URL-адреса и даты изменения на документе было бы достаточно, но, к сожалению, это не так. Какао по-прежнему генерирует предупреждение.

Я попытался изменить порядок (установка нового URL-адреса в документе, ЗАТЕМ переименование файла), но это не помогает.

Я также пробовал исправление, предложенное пользователь на старом посте в CocoaDev:

[self performSelector:@selector(_resetMoveAndRenameSensing)];

Однако даже это не останавливает предупреждение, и я предполагаю, что имеет , чтобы быть правильным способом сделать это с использованием документированного API. Как Xcode обрабатывает вещи, когда пользователь щелкает файл в дереве проекта и переименовывает его во что-то другое. Это не 1. Outlook 2010 2. Outlook 2007 3. Outlook 2003 Я разработал надстройку, которая хорошо работает с 2010 и 2007, НО НЕ с 2003. Я хочу ...

Как мне разработать надстройку для MS Outlook, которая работает со всеми 1. Outlook 2010 2. Outlook 2007 3. Outlook 2003

Я разработал надстройку, которая хорошо работает с 2010 и 2007, НО НЕ с 2003.

Мне нужно что-то вроде этого, которое хорошо работает со всеми тремя выше :)

alt text

5
задан Pratik Deoghare 3 December 2010 в 11:17
поделиться