少量不需要的数据转到iCloud

时间:2012-04-17 03:11:58

标签: iphone icloud

我不希望任何内容备份到iCloud。但是,我的数据无法重新创建,因此我需要将其放在应用程序的文档目录中。对于每个文件,我都做了标准:

    - (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
    if (&NSURLIsExcludedFromBackupKey == nil) { // iOS <= 5.0.1
        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 { // iOS >= 5.1
        return [URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:nil];
    }
}

我有5mB的数据。但我的应用程序仍在iCloud中注册0.2kB(通过设置 - > iCLoud-&gt;管理存储)。所以,为了确定,我这样做了:

-(void)resetBackupAttributes {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSArray *fileListAct = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:nil];
    for (NSString *path in fileListAct) {
        [self addSkipBackupAttributeToItemAtURL:[NSURL fileURLWithPath:path]];
    }

    NSArray *paths2 = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *cacheDirectory = [paths2 objectAtIndex:0];
    NSArray *fileListCache = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:cacheDirectory error:nil];
    for (NSString *path in fileListCache) {
        [self addSkipBackupAttributeToItemAtURL:[NSURL fileURLWithPath:path]];
    }
    NSArray *paths3 = NSSearchPathForDirectoriesInDomains(NSPreferencePanesDirectory, NSUserDomainMask, YES);
    NSString *preferencesDirectory = [paths3 objectAtIndex:0];
    NSArray *fileListPref = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:preferencesDirectory error:nil];
    for (NSString *path in fileListPref) {
        [self addSkipBackupAttributeToItemAtURL:[NSURL fileURLWithPath:path]];
    }
}

它还有0.2kB!有什么我想念的吗?是否有少量数据备份,无论是......如目录树还是其他什么东西?我真正想知道的是,这个0.2kB会因为没有遵循数据存储指南而被拒绝吗?

1 个答案:

答案 0 :(得分:0)

好的,我会把我的评论写成答案:

  

您的应用默认plist是否可能会在   云? - 但你可以在你的iOS(模拟器)之间连接一个代理   和互联网。只是捕获所有传出的数据,看看实际上是什么   得到传播;)。例如SquidMan

这是SquidMan的链接以防万一...
正如你所说,你也认为它是plist。您可以通过设置包含一些垃圾数据的密钥来验证是否总量上升。 ;)