У меня есть NSFileWrapper
с некоторым содержимым. Я хочу сохранить его (writeToURL...:
), добавить в него новый контент и сохранить еще раз.
Я хотел бы избежать повторной записи одних и тех же файлов. Так что, если я понял понятно, значит вариант NSFileWrapperWritingAtomic
не для меня. Тем более, что я сохраняю файловую обертку в методе
- (BOOL)writeAdditionalContent:(id)content
toURL:(NSURL *)absoluteURL
originalContentsURL:(NSURL *)absoluteOriginalContentsURL
error:(NSError *__autoreleasing *)error
(из OSX
аналога UIManagedDocument
)
и как Apple говорит "не используйте этот параметр вместо -[NSDocument writeToURL:ofType:error:]
".
Итак, я не использую эту опцию, но обновление файлов из файловой оболочки (я имею в виду: повторное сохранение) не удается (см. ниже). Любая идея/подсказка?
Вот что я делаю:
1
Я сохраняю его в первый раз с помощью
[self.fileWrapper writeToURL:[absoluteURL URLByAppendingPathComponent:@"attached_files/"]
options:0
originalContentsURL:[absoluteOriginalContentsURL URLByAppendingPathComponent:@"attached_files/"]
error:error] ;
Это работает хорошо.
Моя файловая оболочка
/*
Initializing the file wrapper
*/
_fileWrapper = [[NSFileWrapper alloc] initDirectoryWithFileWrappers:nil] ;
[_fileWrapper setFilename:@"attached_files"] ;
[_fileWrapper setPreferredFilename:@"attached_files"] ;
2
Сохраняю второй раз той же командой. я получаю ошибку
Error Domain=NSCocoaErrorDomain Code=516 "The file already exists".
Данное имя на самом деле "attached_files".
3
Если я использую опцию NSFileWrapperWritingWithNameUpdating
, я все равно получаю ту же ошибку.
4
Если я использую опцию NSFileWrapperWritingAtomic
, я не получаю ошибок.
Null passed to a callee that requires a non-null argument
для-[NSFileWrapper initDirectoryWithFileWrappers:]
. - person Hyperbole   schedule 22.10.2015