2

ガイドラインに示されているようNSURLIsExcludedFromBackupKeyに、フォルダ全体とその内容を に設定することで、フォルダ全体とその内容が iCloud にバックアップされないようにしようとしています。フォルダの URL にキーを設定することはできますが、そのフォルダ内に保存するすべてのデータは、その...10NSURLIsExcludedFromBackupKey

これが私のコードです:

//create the directory:
[[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:NO attributes:nil error:nil];
NSURL *folderURL = [NSURL fileURLWithPath:path isDirectory:YES];

//prevent backup:
NSError *preventBackupError = nil;
BOOL success = [folderURL setResourceValue: [NSNumber numberWithBool: YES]
                                    forKey: NSURLIsExcludedFromBackupKey
                                     error: &preventBackupError];        

//this prints 1 and 1:
NSLog(@"resource values for directory: %@", [folderURL resourceValuesForKeys:@[NSURLIsExcludedFromBackupKey, NSURLIsDirectoryKey] error:nil]);

ここで、ファイル (この場合はconfig.xml) を のサブディレクトリ内に保存してから、次のfolderURLようにします。

NSURL *fileURL = [NSURL fileURLWithPath:[path stringByAppendingPathComponent:@"config.xml"]];
if ([[NSFileManager defaultManager] fileExistsAtPath:fileURL.path]) {
    NSLog(@"resource values for config file: %@", [configURL resourceValuesForKeys:@[NSURLIsExcludedFromBackupKey] error:nil]);
} 

これは印刷しますNSURLIsExcludedFromBackupKey = 0;

this onethis one、またはthis oneなどの他のSO回答を確認しましたが、構文に違いは見られません...

私の質問は、そのキーをフォルダー内のすべてのファイルに手動で設定する必要がありますか? それとも私は何か間違ったことをしていますか?

乾杯

4

1 に答える 1

1

Cocoa には、リソースとその子孫にプロパティを再帰的に適用するための単一のメソッドが組み込まれていません。その理由のいくつかは、エラー処理を簡素化するためだと思います。しかしまた、これを行うことはかなりまれです。

幸いなことに、独自のものを作成するのは非常に簡単です。

  1. 問題のディレクトリ リソースに目的のプロパティを適用します。
  2. NSFileManagerディレクトリ列挙子を要求する
  3. すべてのアイテムを列挙し (デフォルトでは、NSDirectoryEnumeratorすべてのサブディレクトリに降りてきます)、それらのそれぞれにもプロパティを適用します

ただし、これはあなたの場合は必要ないようです。ディレクトリに適用NSURLIsExcludedFromBackupKeyし、それで完了です。

于 2013-04-09T12:51:13.087 に答える