找不到数据库文件

时间:2012-02-08 14:48:58

标签: objective-c ios

我无法理解为什么无法找到db.sqlite。我将它添加到项目的资源目录中。它就在那里。 以下是我检查现有内容的一些代码。

-(void)getDatabaseLocation
{
    NSArray *dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *docsDir = [dirPaths objectAtIndex:0];

    // Build the path to the database file
   NSString *databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent: @"db.sqlite"]];

   NSFileManager *filemgr = [NSFileManager defaultManager];
     if ([filemgr fileExistsAtPath: databasePath ] == NO)
     {
         NSLog(@"NO"); // It's say no when this method  is called.
     }
    else
    {   NSLog(@"YES");
    }
}

// EDIT 现在我检查docsDir中的路径是否存在。

1 个答案:

答案 0 :(得分:2)

当然不存在。您必须先将资源复制到文档目录,如下所示:

if (![filemgr fileExistsAtPath:databasePath])
{
    [filemgr copyItemAtPath:[NSBundle.mainBundle pathForResource:@"db" ofType:@"sqlite"] toPath:databasePath error:nil]; 
}

编辑:如果您只需要对数据库进行查找(不进行编辑),那么您可以这样做:

databasePath = [NSBundle.mainBundle pathForResource:@"db" ofType:@"sqlite"];