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