5

背景:我一直在观看 WWDC 2011 - 208 保护 iOS 应用程序。他们提到了如何使用称为 NSFileProtection 的文件加密来保护我们的数据。虽然我发现提到的自动方法 (@38:00) 有问题,但我希望手动方法 (@37:00) 没有。我尝试对图像使用文件保护,一切都很好。只有我无法创建的 Sqlite。

问题:我尝试创建 SQLite3 数据库(没有核心数据)并作为第三个参数的标志sqlite3_open_v2传递。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: borrrden 的第二条评论指出两个标志的需要是正确的。它按照以下代码工作:

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

1 回答 1

2

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

SQLITE_OPEN_READWRITE
SQLITE_OPEN_CREATE

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

于 2013-02-06T07:08:07.700 回答