Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 替换NSFileWrappers_Iphone_Objective C_Cocoa_Nsfilewrapper - Fatal编程技术网

Iphone 替换NSFileWrappers

Iphone 替换NSFileWrappers,iphone,objective-c,cocoa,nsfilewrapper,Iphone,Objective C,Cocoa,Nsfilewrapper,我有一个NSFileWrapper目录,我想在其中更新某个FileWrapper。我想知道最好的方法是什么 到目前为止,我使用了以下代码: [self.fileWrapper addRegularFileWithContents:photoData preferredFilename:@"photo.data"]; 但是,每当FileWrapper已经存在时,我的FileWrapper中就会出现重复项,看起来是这样的: "1__#$!@%

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

到目前为止,我使用了以下代码:

[self.fileWrapper addRegularFileWithContents:photoData 
                           preferredFilename:@"photo.data"];
但是,每当FileWrapper已经存在时,我的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>";
“1\\$!@%!\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
“2$!@%!#照片.数据”=”;
“3$!@%!#照片.数据”=”;
“4$!@%!#照片.数据”=”;
“photo.data”=”;

如何防止这种情况发生,并简单地替换FileWrapper(在本例中为photo.data)?我在中没有找到任何方法来替换文件包装器。

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

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

[self.fileWrapper addRegularFileWithContents:[self encodeObject:object] 
                           preferredFilename:fileName];

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


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

OS X文件系统可能区分大小写或不区分大小写……这取决于用户如何格式化驱动器。这是一个有效的观点。我假设默认格式(如购买Mac时的格式)“MacOSExtended(Journaled)”。