如何在不在iCloud上存储信息的情况下将文件下载到机器上?

时间:2012-06-08 07:00:17

标签: xcode download icloud

如何在不在iCloud上存储信息的情况下下载文件?

我的应用程序是用于将pdf下载到计算机的应用程序。它被Apple拒绝了,原因是“特别是,我们发现在下载两个问题后,您的应用程序存储了56.5 MB。要检查您的应用程序存储了多少数据: - 转到设置> iCloud。>存储和备份&gt ;管理存储“。如果信息没有存储在iClound上,我想知道如何写。

我的剧本:

- (void) DownloadFile:(NSURL *)url Name:(NSString *)name Folder:(NSString *)folder{

    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSData *myData = [NSData dataWithContentsOfURL:url];
    NSString *file = [NSString stringWithFormat:@"%@/%@",folder,name];

    if(![fileManger fileExistsAtPath:file]){
        [fileManger createFileAtPath:file contents:myData attributes:nil];
    }
}

2 个答案:

答案 0 :(得分:0)

只需将PDF存储在应用程序文档目录中。您仍然可以使用iCloud的键值存储来跟踪哪些文件已下载到哪些设备上。但是,要下载到设备上的文件必须来自非iCloud服务器。

您可能还需要实施一个用户界面,以显示哪些文件已下载,哪些文件可用,以及在需要时从设备中删除这些文件。

答案 1 :(得分:0)

OH谢谢你完成

#import <sys/xattr.h>
....

-(BOOL) addSkipBackupAttributeToItemAtURL:(NSURL *)URL{
     if(&NSURLIsExcludeFromBackupKey == nil){
         const char* filePath = [[URL path] fileSystemRepresentation];
         const char* attrName = "com.apple.MobileBackup";
         u_int8_t attrValue = 1;
         int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);
         return result == 0;
     }else{
         return [URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:nil];
     }
} 

- (void) DownloadFile:(NSURL *)url Name:(NSString *)name Folder:(NSString *)folder{

    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSURL *curfile = [NSURL fileURLWithPath:folder];
    [self addSkipBackupAttributeToItemAtURL:curfile];
    NSData *myData = [NSData dataWithContentsOfURL:url];
    NSString *file = [NSString stringWithFormat:@"%@/%@",folder,name];

    if(![fileManger fileExistsAtPath:file]){
        [fileManger createFileAtPath:file contents:myData attributes:nil];
    }
}

谢谢