3

我读过我可以用“不备份”属性标记文件夹。
据我了解,在这种情况下,目录的所有内容都将从备份中排除。
在我们的应用程序中,我们需要从备份中排除 Documents 目录中的所有文件(这些文件可以在应用程序执行期间从 Documents 中添加或删除)。
我们需要将文件存储在 Documents 中,因为我们使用“应用程序支持 iTunes 文件共享”功能。
我们可以用“不备份属性”标记 Documents 目录吗?
苹果允许这样做吗?
这会成为拒绝我们应用的理由吗?

4

1 回答 1

6

根据苹果

在 iOS 5.0 及更早版本中,将文件放在 /Library/Caches 目录中,以防止它们被备份

在 iOS 5.0.1 及更高版本中,将文件放在 /Library/Application Support 目录中,并对它们应用 com.apple.MobileBackup扩展属性。此属性可防止将文件备份到 iTunes 或 iCloud。如果您有大量支持文件,您可以将它们存储在自定义子目录中,并将扩展属性仅应用于该目录。

据我所知,您不能使用不备份属性标记文档目录

1)您可以使用下面的代码片段标记文档目录中的各个文件

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

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

        NSError *error = nil;

        BOOL success = [fileURL setResourceValue:[NSNumber numberWithBool:YES]
                                      forKey:NSURLIsExcludedFromBackupKey
                                     error:&error];
        return success;
    }

2)您可以在文档文件夹中创建一个子目录并对其应用扩展属性。

您可以使用以下语法设置扩展属性。

int result = setxattr(path, attrName, myDataBytes, [myData length], 0, 0);

您可以在以下链接中找到有关读取和写入扩展属性的更多信息

我希望这有帮助

于 2013-11-17T07:06:21.223 回答