【问题标题】:sqlite3 on iPhone emulator versus device permissions?iPhone模拟器上的sqlite3与设备权限?
【发布时间】:2010-04-19 11:26:47
【问题描述】:

好的,现在我在模拟器上完成了开发,当我安装在我的测试设备上时,我得到了错误

尝试写入只读数据库

控制数据库访问的设置是什么?部署后会很难管理吗?

更多信息......我想我知道发生了什么......当我寻找我的数据库时,它与教程的路径不同。我喜欢做的是在项目的根文件夹下为“内容”创建一个组。我在我定义的路径下的这个组中添加了 JustADatabase.sqlite 文件。由于并非所有路径都是可写的,我推测我的用户创建的路径在安装时是不可写的。

我相信有一种方法可以使用构建/复制脚本将文件安装在正确的位置。

您认为这是问题所在吗?您知道如何编写修复脚本或如何将文件放在我的项目中的正确位置以便正确复制吗?以下是通往 sqlite-open 命令的代码,其中注释掉了“教程”路径。这适用于读取,可能是写入访问被拒绝的原因。

- (void)initializeDatabase {

    // ??? NSArray  *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    // ??? NSString *documentsDirectory = [paths objectAtIndex:0];
    // ??? NSString *pathTutorial = [documentsDirectory stringByAppendingPathComponent: @"JustaDatabase.sqlite"];
    NSString *path = [[NSBundle mainBundle] pathForResource:@"JustaDatabase" ofType:@"sqlite"]; 

    if( sqlite3_open([path UTF8String], &database) == SQLITE_OK ) {
        NSLog(@"%s: opened database %@", __FUNCTION__, path);
    } else {
        NSAssert1(0,@"Failed to open database: '%s'.", sqlite3_errmsg(database));
    }
}

【问题讨论】:

    标签: iphone resources sqlite database-permissions


    【解决方案1】:

    sqlite3 权限只是文件权限。

    您需要将 db 文件复制到文档目录,因为您无法写入设备上捆绑目录中的文件。

    【讨论】:

      猜你喜欢
      • 2010-09-27
      • 2011-03-18
      • 1970-01-01
      • 2011-08-11
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      • 1970-01-01
      • 2018-03-09
      相关资源
      最近更新 更多