#import "NSFileManager+DoNotBackup.h"
@interface NSFileManager (DoNotBackup)
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL;
@end
#import "NSFileManager+DoNotBackup.h"
#include <sys/xattr.h>
@implementation NSFileManager (DoNotBackup)
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL {
/*
if (&NSURLIsExcludedFromBackupKey == nil) {
NSLog(@"Setting com.apple.MobileBackup...");
const char* filePath = [[URL path] fileSystemRepresentation];
const char* attrName = "com.apple.MobileBackup";
u_int8_t attrValue = 1;
int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);
return result == 0;
} else {
NSLog(@"Setting NSURLIsExcludedFromBackupKey...");
return [URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:nil];
}
*/
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;
}
@end
使用案例:
+(void)saveNewsItems:(NSArray *)newsItems {
LogMethod();
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@/news_items.plist", documentsDirectory];
NSMutableArray *itemsToSave = [[NSMutableArray alloc] init];
for (NewsItem *item in newsItems) {
[itemsToSave addObject:[item toDictionary]];
}
NSFileManager *fileMgr = [NSFileManager defaultManager];
if ([itemsToSave writeToFile:filePath atomically:YES]) {
[fileMgr addSkipBackupAttributeToItemAtURL:[NSURL fileURLWithPath:filePath isDirectory:NO]];
} else {
NSLog(@"Couldn't save file...");
}
}