Rob*_*ert 4 backup xcode objective-c ios icloud
我试图阻止我的应用程序将文件备份到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;
}
Run Code Online (Sandbox Code Playgroud)
我在应用程序启动时使用此代码调用它:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSURL *pathURL= [NSURL fileURLWithPath:documentsDirectory];
[PreventBackup addSkipBackupAttributeToItemAtURL:pathURL];
Run Code Online (Sandbox Code Playgroud)
cosole打印prevent backup method called without error但应用程序仍然显示具有相同数量的数据用于备份以前.
知道这出错了吗?
-EDIT 2-
好的,我认为这已经解决了.文件正在下载到名为"downloads"的子文件夹.更改上面的代码,使其读取如下似乎已成功:
NSString *downloadsFolder = [documentsDirectory stringByAppendingPathComponent:(@"/downloads")];
NSURL *pathURL= [NSURL fileURLWithPath:downloadsFolder];
[PreventBackup addSkipBackupAttributeToItemAtURL:pathURL];
Run Code Online (Sandbox Code Playgroud)
感谢大家的帮助.
- (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];
Run Code Online (Sandbox Code Playgroud)
将此" documentURLWithExtension" 传递给此函数
[self addSkipBackupAttributeToItemAtURL:documentURLWithExtension];
Run Code Online (Sandbox Code Playgroud)
在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))
Run Code Online (Sandbox Code Playgroud)
和:
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
}
Run Code Online (Sandbox Code Playgroud)