ファイルを作成してから、ファイルに NSURLIsExcludedFromBackupKey 属性を追加しています。これを行うために、HPSFileHelper クラスに次の 2 つのメソッドがあります。
+(void)writeDataToFileWithData:(NSData*)data andFilename:(NSString*)fileName
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:fileName];
[data writeToFile:filePath atomically:YES];
NSURL* fileURL = [NSURL fileURLWithPath:filePath];
[HPSFileHelper addSkipBackupAttributeToItemAtURL:fileURL]; // Prevent this file from being backed up.
}
+(BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]);
NSError *error = nil;
BOOL success = [URL setResourceValue: [NSNumber numberWithBool: YES]
forKey: NSURLIsExcludedFromBackupKey error: &error];
if(!success){
NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error);
}
return success;
}
問題は、assert ... fileExistsAtPath が時々失敗することです。おそらくこれは、アサートが実行されるまでにファイルが完全に書き込まれてロック解除されていないことがあるからでしょうか? (大きなファイルの場合?)
この問題をどのようにコーディングすればよいですか?