如何更新NSFileWrapper?

时间:2014-03-10 12:05:38

标签: objective-c cocoa-touch cocoa nsfilewrapper

我有NSFileWrapper的内容。我想保存它(writeToURL...:),为其添加新内容并再次保存

我想避免一次又一次地写同样的文件。所以,如果我清楚地理解,这意味着选项NSFileWrapperWritingAtomic不适合我。特别是当我在方法

中保存文件包装器时
- (BOOL)writeAdditionalContent:(id)content
                         toURL:(NSURL *)absoluteURL
           originalContentsURL:(NSURL *)absoluteOriginalContentsURL
                         error:(NSError *__autoreleasing *)error

OSX类似物UIManagedDocument

和Apple says“不要在覆盖-[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,我不会收到错误。

0 个答案:

没有答案