6

我有一个 NSFileWrapper 目录,我想在其中更新某个 FileWrapper。我想知道最好的方法是什么?

到目前为止,我已经使用了这段代码:

[self.fileWrapper addRegularFileWithContents:photoData 
                           preferredFilename:@"photo.data"];

但是,只要 FileWraper 已经存在,我就会在 FileWrapper 中得到重复项,如下所示:

"1__#$!@%!#__photo.data" = "<NSFileWrapper: 0x6bb0260>";
"2__#$!@%!#__photo.data" = "<NSFileWrapper: 0x6b89b80>";
"3__#$!@%!#__photo.data" = "<NSFileWrapper: 0x6ba1700>";
"4__#$!@%!#__photo.data" = "<NSFileWrapper: 0x6bc8480>";
"photo.data" = "<NSFileWrapper: 0x6bcfc50>";

如何防止这种情况并简单地替换 FileWrapper - 在这种情况下为 photo.data?我没有在NSFileWrapper Class Reference中找到任何替换 FileWrappers 的方法。

4

2 回答 2

6

我认为这可能是解决方案:

NSFileWrapper *oldFileWrapper = [self.fileWrapper.fileWrappers objectForKey:fileName];
if (oldFileWrapper) [self.fileWrapper removeFileWrapper:oldFileWrapper];

[self.fileWrapper addRegularFileWithContents:[self encodeObject:object] 
                           preferredFilename:fileName];
于 2012-06-20T15:57:02.840 回答
0

我只是偶然发现了这个问题,对我来说这是因为我有一个名为"Resources"的文件夹和一个名为"resources"的文件夹。这造成了一个 iCloud 问题,因为在 Mac OS X 上文件系统不区分大小写,但它在 iOS 上

看起来您案例中的潜在问题也可能与大写/小写相关。当然,您可以通过替换文件包装器来解决此问题,这会有效地删除并重新创建文件。对于小文件,这可能是一种可接受的解决方案,但对于目录中较大或许多文件的效率可能非常低(因为即使文件没有更改,文件也会被同步)。

于 2014-09-08T21:34:57.480 回答