阻止应用备份文档文件夹?

我试图阻止我的应用程序将文件备份到iCloud,但已经变得完全混乱,有点迷失。

-编辑-

我已经对此进行了更新,以反映我在下面的海报中所做的更改。

我想阻止备份到应用程序文档目录的文件。

到目前为止,我有一个名为PreventBackup的类,具有以下方法:

 + (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL { NSError *error = nil; BOOL success = [URL setResourceValue: [NSNumber numberWithBool: YES] forKey: NSURLIsExcludedFromBackupKey error: &error]; if(!success){ NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error); } NSLog(@"prevent backup method called without error"); return success; } 

我在应用程序启动时使用此代码调用它:

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSURL *pathURL= [NSURL fileURLWithPath:documentsDirectory]; [PreventBackup addSkipBackupAttributeToItemAtURL:pathURL]; 

cosole打印prevent backup method called without error但应用程序仍显示为具有相同数量的数据,以便以前执行备份。

知道这出错了吗?

-EDIT 2-

好的,我认为这已经解决了。 文件正在下载到名为“downloads”的子文件夹。 更改上面的代码,使其读取如下似乎已成功:

 NSString *downloadsFolder = [documentsDirectory stringByAppendingPathComponent:(@"/downloads")]; NSURL *pathURL= [NSURL fileURLWithPath:downloadsFolder]; [PreventBackup addSkipBackupAttributeToItemAtURL:pathURL]; 

感谢大家的帮助。

 - (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; } NSURL *documentURLWithExtension = [documentURL URLByAppendingPathExtension:extensionType]; 

将此“ documentURLWithExtension ”传递给此函数

 [self addSkipBackupAttributeToItemAtURL:documentURLWithExtension]; 

在Swift中:

 //Path of document directory var docPathAry : NSArray! = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) var docDirPathStr: AnyObject? = docPathAry.count > 0 ? docPathAry[0] : nil self.addSkipBackupAttributeToItemAtURL(NSURL.fileURLWithPath(docDirPathStr as NSString)) 

和:

 func addSkipBackupAttributeToItemAtURL(URL: NSURL!) -> Bool { assert(NSFileManager.defaultManager().fileExistsAtPath(URL.path)) var err : NSError? = nil var success : Bool! = URL.setResourceValue(NSNumber.numberWithBool(true), forKey: NSURLIsExcludedFromBackupKey, error: &err) if(!success) { println("Error excluding \(URL.lastPathComponent) from backup\(err) ") } return success }