0

SQLabs からSQLite DB を作成し、作成SQLiteManagerした iOS SDK アプリに DB ファイル mydb.sqlite3 を追加しました。(コードで) DB を作成し、テーブルを作成してクエリを実行できるため、SQLite を使用するようにアプリを正しく構成したと思います。

外部で作成した DB をアプリ フォルダーにドラッグすると、アプリの下のグループに表示されます。また、アプリの「バンドル リソースのコピー」ビルド フェーズにも表示されます。

外部で作成されたDBにクエリを実行しようとすると。テーブルが見つからないというエラーが表示されます。これは、db ファイルが何らかの理由でビルドに含まれておらず、データベースを開くとデフォルトで作成されるためだと思います。

この考えを確認するために、シミュレーターからアプリをアンインストールし、デバッガーでアプリを再度実行すると、(db を開く前に)NSLog()アプリケーション内のすべてのファイルへのデバッグ コードが含まれています。データベース ファイルは、ログ。

デバッガーを実行したときに、プロジェクトに含まれている DB がシミュレーターのアプリ ドキュメント フォルダーにコピーされない理由について何か考えはありますか?

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 に答える