3

我们有一个使用 Core Data 存储数据的应用程序。一些数据来自服务器,大小可变,虽然通常很小,但也可能很大(几兆字节)。我们使用启用了“允许外部存储”的二进制数据字段来存储此数据。

我们的应用程序因违反规则 2.23 而被拒绝,因为我们正在存储可以从服务器重新下载的数据,并且没有将其标记为从备份中排除。

好的,很公平,所以我想将我们的数据库标记为从备份中排除。标记数据库本身很容易:

    BOOL succ = [storeURL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&error];
    if (!succ) {
        NSLog(@"Error setting %@ to be excluded from backups: %@", storeURL, error);
    }

但这仅涵盖 SQLite 文件本身。当 Core Data 存储外部文件时,它会将它们存储在单独的目录中:

.../Private Documents/MyDatabase.sqlite
.../Private Documents/.MyDatabase_SUPPORT/_EXTERNAL_DATA/(files here)

我需要将外部存储的文件标记为不可备份。我可以在 .MyDatabase_SUPPORT 文件夹上设置 NSURLIsExcludedFromBackupKey ,但我没有看到任何支持的方式来获取此文件夹的名称。

我可以自己构建它,但我不喜欢依赖这个实现细节。是否有任何受支持的方法可以找出 Core Data 在哪里存储数据库的外部文件?

4

1 回答 1

3

创建一个子目录,在该子目录中创建数据库,然后在子目录上设置 NSURLIsExcludedFromBackupKey 属性。这样子目录中的任何内容,包括隐藏的 SUPPORT 目录,都将从备份中排除。

于 2013-06-04T18:26:23.937 回答