1

我有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

如果我使用 option NSFileWrapperWritingWithNameUpdating,我仍然会得到同样的错误。

4

如果我使用 option NSFileWrapperWritingAtomic,我不会收到错误消息。

4

0 回答 0