6

特定のFileWrapperを更新したいNSFileWrapperディレクトリがあります。私はそうするのが最善の方法は何だろうと思っていましたか?

これまで私はこのコードを使用しました:

[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クラスリファレンスで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 という名前のフォルダーがあったためです。Mac OS Xではファイルシステムで大文字と小文字が区別されないため、これによりiCloudの問題が発生しましたが、iOSでは発生します。

あなたのケースの根本的な問題も大文字/小文字に関連しているようです。もちろん、これを修正するには、ファイルラッパーを置き換えます。これにより、ファイルが効果的に削除および再作成されます。これは小さなファイルには受け入れられる解決策かもしれませんが、ディレクトリ内の大きなファイルや多数のファイルには非常に非効率的です(ファイルが変更されていなくても同期されるため)。

于 2014-09-08T21:34:57.480 に答える