gpt4 book ai didi

ios - 在 iOS 中创建带文件保护的 SQLite3 数据库失败

转载 作者:可可西里 更新时间:2023-11-01 05:56:30 25 4
gpt4 key购买 nike

背景:我一直在观看 WWDC 2011 - 208 Securing iOS application。他们提到如何使用名为 NSFileProtection 的文件加密来保护我们的数据。当我发现 automatic method mentioned (@38:00) is bugged ,我希望手动方式 (@37:00) 不是。我尝试对图像使用文件保护,一切都很好。只有 Sqlite 我无法创建。

问题:我尝试使用 sqlite3_open_v2 创建 SQLite3 数据库(没有核心数据)并传递 SQLITE_OPEN_FILEPROTECTION_COMPLETE 作为第三个参数的标志。它不返回 SQLITE_OK

代码:

if (sqlite3_open_v2([databasePath UTF8String], &database, SQLITE_OPEN_FILEPROTECTION_COMPLETE, NULL) == SQLITE_OK){
//everything works
}else{
//failed
}

更新:
正如 borrrden 提到的,两者都导致了以下错误代码:SQLITE_MISUSE(库使用不当)


更新 2:borrden 的第二条评论指出需要两个标志是正确的。它按照代码工作:

if (sqlite3_open_v2([databasePath UTF8String], &database, SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE|SQLITE_OPEN_FILEPROTECTION_COMPLETE, NULL) == SQLITE_OK)

最佳答案

Sqlite 对您的标志中缺少指定的文件访问模式不满意。它不知道是否应该以可写方式打开它,或者如果它不存在则是否创建它。因此,添加以下两个标志以及您当前使用的标志:

SQLITE_OPEN_READWRITE
SQLITE_OPEN_CREATE

这表明 sqlite 应该打开一个可写数据库,如果不存在则创建它。

关于ios - 在 iOS 中创建带文件保护的 SQLite3 数据库失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14721350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com