【问题标题】:Using apples suggested code isnt excluding files from icloud backup使用苹果建议的代码不会从 icloud 备份中排除文件
【发布时间】:2015-01-24 10:03:30
【问题描述】:

由于 icloud 备份问题,我有一个应用被拒绝了 3 次。 Apple 回信说我需要使用一些代码来排除文件的备份。但是,这不起作用,我束手无策。

这是我用过的代码

- (BOOL)downloadFile:(NSString *)fileURI targetFolder:(NSString *)targetFolder targetFilename:(NSString *) targetFilename{
    @try{

        NSError *error = nil;
        NSURL *url = [NSURL URLWithString:fileURI];
        if(![url setResourceValue:@"YES" forKey:NSURLIsExcludedFromBackupKey error:&error]){
            NSLog(@"KCDM: Error excluding %@ from backup %@", fileURI, error);
        }else{
            NSData *urlData = [NSData dataWithContentsOfURL:url];

            if ( urlData )
            {
                NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
                NSString *documentsDirectory = [paths objectAtIndex:0];
                NSString *dataPath = [documentsDirectory stringByAppendingString:targetFolder];
                NSError *error = nil;

                if(![[NSFileManager defaultManager] fileExistsAtPath:dataPath]){
                    [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:YES attributes:nil error:&error];
                }

                NSString *filePath = [NSString stringWithFormat:@"%@/%@%@", documentsDirectory,targetFolder,targetFilename];


                return [urlData writeToFile:filePath atomically:YES];
            }
        }
    }
    @catch(NSException * e){
        NSLog(@"Error download: %@",e);
    }

    return false;
}

我做错了什么?

【问题讨论】:

    标签: objective-c icloud


    【解决方案1】:

    您尝试为从网络下载的http://-Url 设置NSURLIsExcludedFromBackupKey。那是行不通的。

    您必须为保存在设备上的实际文件设置此键值对。 此外,您不应将此值设置为字符串 @"YES",您必须使用表示布尔值 YES 的 NSNumber 对象。

    例如:

    NSString *filePath = [NSString stringWithFormat:@"%@/%@%@", documentsDirectory,targetFolder,targetFilename];
    if ([urlData writeToFile:filePath atomically:YES]) {
        // did write correctly
        NSURL *fileURL = [NSURL fileURLWithPath:filePath];
        if(![fileURL setResourceValue:@YES forKey:NSURLIsExcludedFromBackupKey error:&error]){
            NSLog(@"KCDM: Error excluding %@ from backup %@", fileURI, error);
            return NO;
        }
        // could set NSURLIsExcludedFromBackupKey 
        return YES;
    }
    // could not write to file
    return NO;
    

    【讨论】:

      猜你喜欢
      • 2012-08-19
      • 2014-10-20
      • 1970-01-01
      • 2012-05-22
      • 2012-10-04
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      • 2014-01-13
      相关资源
      最近更新 更多