从备份中排除目录:即使 setResourceValue 已报告成功,NSURLIsExcludedFromBackupKey 也并不总是有效

问题描述 投票:0回答:1

我想从备份中排除文档存储类中的目录。

像这样设置排除属性

+ (BOOL)kit_addSkipBackupAttributeForItemAtURL:(NSURL *)url
{
    if (![[NSFileManager defaultManager] fileExistsAtPath:url.path]) {
        return NO;
    }
    NSError *error = nil;
    NSNumber *value = nil;
    BOOL success = [url getResourceValue:&value forKey:NSURLIsExcludedFromBackupKey error:&error];
    if (value.boolValue == YES) {
        NSLog(@"ALREADY Excluded %@ from backup", [url absoluteString]);
        return YES;
    }
    success = [url setResourceValue:@(YES)
                             forKey:NSURLIsExcludedFromBackupKey
                              error:&error];
    if (!success){
        NSLog(@"Error excluding %@ from backup: %@", [url lastPathComponent], error);
    }
    success = [url getResourceValue:&value
                             forKey:NSURLIsExcludedFromBackupKey
                              error:&error];
    NSAssert(success, @"The backup exclusion attribute is missing");
    NSLog(@"Excluding %@ from backup", [url absoluteString]);
    NSAssert(value.boolValue, @"The backup exclusion attribute is false");
    return success;
}

确实 trip: value.boolValue 为 NO,稍后使用 ls -la@ {directoryname} 列出目录不会显示该属性。不知何故,它不适用于文件系统中的某些项目(在同一存储类别内!)。

UPD:应用程序支持中的情况相同,但它们不粘 UPD2:它也不会粘在库/缓存中的一个特定目录上!什么?

ios objective-c foundation nsdocumentdirectory
1个回答
0
投票

已解决:应用程序支持存储类是专门为这些无人区情况而创建的,当数据不需要清除时,但数据还不够重要,无法进行整体备份(不是由该用户创建的文档,并且在其他地方不可用) ).

© www.soinside.com 2019 - 2024. All rights reserved.