微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

objective-c – 阻止应用程序备份文档文件夹?

我试图阻止我的应用程序将文件备份到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打印防止调用的备份方法没有错误,但应用程序仍显示为具有相同数量的数据,以便以前执行备份.

知道这出错了吗?

-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 %@",error);
    }
    return success;
}

NSURL *documentURLWithExtension = [documentURL URLByAppendingPathExtension:extensionType];

将此“documentURLWithExtension”传递给此函数

[self addSkipBackupAttributetoItemAtURL:documentURLWithExtension];

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐