从 NSData 而不是文件获取 Sqlite 数据库

Get Sqlite database from NSData instead of file

我曾经使用 FMDB 从文件中读取 sqlite 数据。

FMDatabase *db = [FMDatabase databaseWithPath:filePath];

现在我要加密文件。当应用程序打开时,它会将文件解密为 NSData 对象。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

  NSData *decryptedData = [self getDecryptedData]; 

 return YES;

}

有什么方法可以从 NSData 获取 FMDatabase 对象吗?我不想将 NSData 保存到文件中,因为它已被解密。

我认为 FMDatabaseSQLite 通常与文件系统相关,这意味着默认情况下可能无法做到这一点。

我猜你的选择:

  • 对加密的 NSData 使用单独的文件,对解密的 SQLite 数据库使用另一个文件——但是这个解决方案失去了拥有第一个文件的任何好处

  • NSData 存储在文件中并使用您需要的临时或内存中的 SQLite 数据库(参见 https://github.com/ccgus/fmdb#database-creation)启动时导入数据,关闭时导出数据

  • 使用系统范围 Security 东西的更复杂的方法,但我真的没有这方面的经验