Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSInternalInconsistencyException Sqlite数据库时未捕获异常_Objective C_Sqlite - Fatal编程技术网

Objective c NSInternalInconsistencyException Sqlite数据库时未捕获异常

Objective c NSInternalInconsistencyException Sqlite数据库时未捕获异常,objective-c,sqlite,Objective C,Sqlite,我认为我的openDB方法正在创建此错误--“由于未捕获的异常'NSInternalInconsistencyException'终止应用程序,原因是:'数据库无法打开'” 有没有办法解决这个问题?我正在运行xcode 4.6 -(NSString *) filePath { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);

我认为我的openDB方法正在创建此错误--“由于未捕获的异常'NSInternalInconsistencyException'终止应用程序,原因是:'数据库无法打开'”

有没有办法解决这个问题?我正在运行xcode 4.6

-(NSString *) filePath {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);
    return [[paths objectAtIndex:0] stringByAppendingPathComponent:@"bp.sql"];  
}

-(void) openDB {
    if (sqlite3_open([[self filePath] UTF8String], &db) != SQLITE_OK) {
        sqlite3_close(db);
        NSAssert(0, @"Database failesad to open");
    } else {
        NSLog(@"database opened");
    }
}

以上是我关注的youtube教程。其中一个用户发布了这段代码,这使它能够工作!但是我不知道为什么会这样

    NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString* documentsDirectory = [paths lastObject]; NSString* databasePath = [documentsDirectory stringByAppendingPathComponent:@"bp.sqlite"]; return databasePath;

有人能解释一下吗?

检查代码中的这一行

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);
和这个比较一下

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

原因是您在
nsSearchPathForDirectories中使用了错误的
nsSerachPathForDirectority
方法

是否编写了将数据库从应用程序包复制到设备目录的代码?我不确定您的意思。我是新手。你的sqlite数据库在哪里?