Objective c 阻止应用备份文档文件夹?
我试图阻止我的应用程序将文件备份到iCloud,但我已经完全搞糊涂了,有点不知所措 -编辑- 我更新了这个,以反映由于下面的海报我所做的改变 我想防止备份下载到应用程序文档目录的文件 到目前为止,我使用以下方法创建了一个名为Objective c 阻止应用备份文档文件夹?,objective-c,ios,xcode,backup,icloud,Objective C,Ios,Xcode,Backup,Icloud,我试图阻止我的应用程序将文件备份到iCloud,但我已经完全搞糊涂了,有点不知所措 -编辑- 我更新了这个,以反映由于下面的海报我所做的改变 我想防止备份下载到应用程序文档目录的文件 到目前为止,我使用以下方法创建了一个名为PreventBackup的类: + (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL { NSError *error = nil; BOOL success = [URL setResourceV
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打印了阻止调用的备份方法,没有错误
,但应用程序仍显示有与以前相同数量的备份数据
知道哪里出了问题吗
-编辑2-
好的,我想这已经解决了。这些文件正在下载到名为“下载”的子文件夹中。更改上面的代码,使其如下所示似乎已经达到了目的:
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))
以及:
支票:谢谢。我已经看到了第二个链接,它没有帮助,但是第一个有帮助。非常感谢。这似乎是一个小小的警告;我需要注释掉
assert([[NSFileManager defaultManager]fileExistsAtPath:[URL path]])代码>
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
}