【问题标题】:IOS - SQLite DB path from NSBundle mainbundle returns nullIOS - 来自 NSBundle mainbundle 的 SQLite DB 路径返回 null
【发布时间】:2014-02-25 17:44:11
【问题描述】:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *databasePath = [documentsDirectory stringByAppendingPathComponent:@"idataBase.sqlite3"];
NSLog(@"%@",databasePath);
NSString *databasePathFromApp = [[NSBundle mainBundle] pathForResource:@"idataBase" ofType:@"sqlite3"];
NSLog(@"%@",databasePathFromApp);
bool databaseAlreadyExists = [[NSFileManager defaultManager] fileExistsAtPath:databasePath];
if (!databaseAlreadyExists){
    [[NSFileManager defaultManager] copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];
}

我试图将数据库复制到文档目录,但是当我尝试从主包获取数据库路径并且我的应用程序崩溃时它返回 null。该数据库存在于应用程序中。但是为什么它返回null呢?

【问题讨论】:

  • nil 是什么? databasePathdatabasePathFromApp?
  • databasePathFromApp 为零。
  • 那么应用的资源包实际上并不包含名为idataBase.sqlite3的文件。确保文件的目标正确并且文件名具有准确的名称(包括大小写)。
  • 我遇到了一些奇怪的问题,我通过再次添加数据库文件来解决上述问题。但现在我无法在数据库中插入数据。
  • NSBundle returns nil 的可能重复项

标签: ios sqlite resourcebundle


【解决方案1】:

如果你的项目中有两个 .sqlite3

因为可能是您的 xCode 目标是“Build Phases”,在“Copy Bundle Resources”下添加文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多