如何理解iOS“文档和数据”(与云备份相关)

时间:2014-06-19 18:55:32

标签: ios app-store backup icloud

我的应用被Apple拒绝了,因为他们说它并没有遵循" iOS数据存储指南。"

我已使用以下代码更新了应用,以标记下载的内容,以便它不会备份到云端...

- (BOOL)addSkipBackupAttributeToItemAtPath:(NSString *)filePathString {
    NSURL *fileURL = [NSURL fileURLWithPath:filePathString];

    NSLog(@"Going to add skip attribute to " @"%@", filePathString);

    assert([[NSFileManager defaultManager] fileExistsAtPath: [fileURL path]]);

    NSError *error = nil;

    BOOL success = [fileURL setResourceValue:[NSNumber numberWithBool: YES]
                                      forKey: NSURLIsExcludedFromBackupKey
                                       error: &error];
    NSLog(@"Added skip attribute to " @"%@", filePathString);

    return success;
}

然而,当我检查设置 - >一般 - >用法 - > MyApp,它显示"文档和数据"作为> 30MB。从30Mb的内容已下载到应用程序的角度来看,这是正确的,但这是否意味着这些30Mb将备份到云端?

换句话说,如果我标记文件以便不对它们进行备份,那么它们是否会包含在文件和数据中?值?

干杯!

1 个答案:

答案 0 :(得分:2)

用户创建的或用户私有且必须不会消失的数据应位于Documents目录中。此外,对用户有价值且无法重新创建的数据应位于Documents目录中。 Documents目录中的文件会自动备份到iCloud。

从互联网下载的数据应保存到Caches目录中,因为它可以很容易地再次重载,因此将它们保存到iCloud是没有意义的。数据只占用iCloud中的空间。如果用户需要恢复他的设备,应用程序可以从第一个位置重新下载数据。如果硬盘上的可用空间量变得非常低,则操作系统可以擦除Caches目录。

有一种特殊情况,即文件目录中保存的文件设置了NSURLIsExcludedFromBackupKey标志。这适用于对用户有价值并且应该始终可用的数据,即使没有互联网连接,但是 - 另一方面 - 可以在需要时轻松地重新下载或更新。

iCloud备份中包含的是Documents目录的内容,不包括设置了NSURLIsExcludedFromBackupKey标志的文件。不备份位于应用程序容器内的所有其他目录。


设置中的“文档和数据”是指Documents文件夹的大小。如果从iCloud备份中排除了任何内容,则计算不会考虑。大小不是指iCloud备份中的数据大小。但是,如果Settings.app显示“30MB”,则可以确保iCloud备份至少不会超过30MB。