NSInternalInconsistencyException在Sqlite数据库时未捕获异常

时间:2013-11-27 12:15:16

标签: objective-c sqlite

我认为我openDB方法是创建该误差---"终止应用程序由于未捕获的异常' NSInternalInconsistencyException',原因是:'数据库failesad打开'&#34 ;

任何想法如何解决这个问题?我正在运行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");
    }
}

2 个答案:

答案 0 :(得分:0)

以上内容来自我关注的youtube教程。其中一位用户发布了此代码,使其正常工作!但我不确定为什么会如此 ......

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

任何人都可以解释这个吗?

答案 1 :(得分:0)

检查代码中的这一行

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

并将其与此比较

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

原因是您在NSSerachPathForDirectory方法

中使用了错误的NSSearchPathForDirectoriesInDomains