我使用标准方法从备份中排除:
+ (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
assert([[NSFileManager defaultManager] fileExistsAtPath:[URL path]]);
NSError *error = nil;
BOOL success = [URL setResourceValue:@(YES)
forKey:NSURLIsExcludedFromBackupKey error:&error];
if (!success) {
NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error);
}
return success;
}
正如有些人建议我在 [NSURL fileURLWithPath:path] 中使用此方法,但它不起作用:
从备份中排除groups.xml时出错Error Domain = NSCocoaErrorDomain Code = 513“Неудалосьзавершитьоперацию。(Cocoa,ошибка513)”
UserInfo = 0x170272ac0 {
NSURL = file:///private/var/mobile/Containers/Bundle/Application/59286088-C226-4653-A84F-A4B5D40C11DE/anatomyfree.app/groups.xml,NSFilePath = / private / var / mobile / Containers / Bundle / Application / 59286088-C226-4653-A84F-A4B5D40C11DE / anatomyfree.app / groups.xml,NSUnderlyingError = 0x1702492a0“Неудалосьзавершитьоперацию。不允许操作” }
此文件存在。它被解析但不能从备份中排除。这是什么原因?
我使用iOS 8.2,iPhone 6,ru语言环境。
这是方法调用:
NSString *path = [[NSBundle mainBundle] pathForResource:fileName ofType:extension];
NSURL *url = [NSURL fileURLWithPath:path];
[Utilities addSkipBackupAttributeToItemAtURL:url];
答案 0 :(得分:1)
在NSURL * url = [NSURL fileURLWithPath:path]之前添加此代码
if([[UIDevice currentDevice] systemVersion] floatValue] >= 8.0f){
path = [NSString stringWithFormat:@"./%@",path];
}
答案 1 :(得分:1)
我在使用时遇到了问题:
pDirURL.setValue(true , forKey: NSURLIsExcludedFromBackupKey)
哪个工作正常。有一天它开始抛出NSUnknownKeyException
,原因不明。现在我用
try pDirURL.setResourceValue(true, forKey: NSURLIsExcludedFromBackupKey)
再次正常工作!
答案 2 :(得分:0)
试试这个,它在iOS 8中完美适用于我:
NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@.%@", documentsPath, fileName, extension]];
[Utilities addSkipBackupAttributeToItemAtURL:url];
答案 3 :(得分:0)
它无法正常工作的原因是因为您的资源文件随您的应用程序(软件包)一起提供,该应用程序不会在用户的iCloud中进行备份。
您的应用程序包中的资源永远不会被写入,这就是任何写入/修改操作失败的原因。
如果您真的想使用iCloud备份,则需要先将文件复制到PHP Parse error: imagepng(): gd-png error: cannot allocate libpng main struct
这样的目录中。