从 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 保存到文件中,因为它已被解密。
我认为 FMDatabase
和 SQLite 通常与文件系统相关,这意味着默认情况下可能无法做到这一点。
我猜你的选择:
对加密的 NSData
使用单独的文件,对解密的 SQLite 数据库使用另一个文件——但是这个解决方案失去了拥有第一个文件的任何好处
将 NSData
存储在文件中并使用您需要的临时或内存中的 SQLite 数据库(参见 https://github.com/ccgus/fmdb#database-creation)启动时导入数据,关闭时导出数据
使用系统范围 Security
东西的更复杂的方法,但我真的没有这方面的经验
我曾经使用 FMDB 从文件中读取 sqlite 数据。
FMDatabase *db = [FMDatabase databaseWithPath:filePath];
现在我要加密文件。当应用程序打开时,它会将文件解密为 NSData 对象。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSData *decryptedData = [self getDecryptedData];
return YES;
}
有什么方法可以从 NSData 获取 FMDatabase 对象吗?我不想将 NSData 保存到文件中,因为它已被解密。
我认为 FMDatabase
和 SQLite 通常与文件系统相关,这意味着默认情况下可能无法做到这一点。
我猜你的选择:
对加密的
NSData
使用单独的文件,对解密的 SQLite 数据库使用另一个文件——但是这个解决方案失去了拥有第一个文件的任何好处将
NSData
存储在文件中并使用您需要的临时或内存中的 SQLite 数据库(参见 https://github.com/ccgus/fmdb#database-creation)启动时导入数据,关闭时导出数据使用系统范围
Security
东西的更复杂的方法,但我真的没有这方面的经验