我有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
,我不会收到错误消息。