我们有一个使用 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 在哪里存储数据库的外部文件?