0

我在 from SQLabs 中创建了一个 SQLite 数据库,SQLiteManager然后将数据库文件 mydb.sqlite3 添加到我构建的 iOS SDK 应用程序中。我相信我已正确配置应用程序以使用 SQLite,因为我可以(在代码中)创建数据库、创建表并查询它。

当我将外部创建的数据库拖到应用程序文件夹中时,它会出现在应用程序下方的组中。它也出现在应用程序的“复制捆绑资源”构建阶段。

当我尝试查询外部创建的数据库时。我收到一个找不到表的错误,我假设这是因为 db 文件以某种方式未包含在构建中,当我打开数据库时,它默认创建一个。

为了确认这个想法,如果我从模拟器中卸载应用程序并在调试器中再次运行应用程序,这次包含(在我打开数据库之前)NSLog()应用程序中所有文件的一些调试代码,数据库文件未列在日志。

关于为什么在我运行调试器时项目中包含的数据库不会被复制到模拟器上的应用程序文档文件夹中的任何想法?

4

1 回答 1

0

您可以使用以下代码:

1) 检查数据库是否不存在 2) 将数据库从主包复制到文档文件夹

NSArray *paths = [NSArray arrayWithObject:[self MR_applicationDocumentsDirectory]];
NSFileManager *fm = [[NSFileManager alloc] init];

for (NSString *path in paths) 
{
    NSString *filepath = [path stringByAppendingPathComponent:storeFileName];
    if ([fm fileExistsAtPath:filepath])
    {

    } else {
        NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"YourDBNameHere" ofType:@"sqlite"];
        if (defaultStorePath) {
            [fm copyItemAtPath:defaultStorePath toPath:filepath error:NULL];
        }

     }
}
于 2013-03-13T01:46:27.873 回答