我们有一个使用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存储数据库外部文件的位置?
答案 0 :(得分:3)
创建子目录,在该子目录中创建数据库,然后在子目录中设置NSURLIsExcludedFromBackupKey属性。这样,子目录中的任何内容(包括隐藏的SUPPORT目录)都将从备份中排除。