データが入力されたデータベースを自分のアプリで配布したいと考えています。SQLitePluginを実装しようとしていますが、ページにあるように、iOS でそれを行う方法に関するドキュメントはありません。この時代遅れの手順を実装しようとしましたが、うまくいきませんでした。これをした人はいますか?
3 に答える
私は少なくともそれが私のために働く解決策を見つけたので、ここにあります:
あなたが言及したリンクのチュートリアルを使用して従いました:http://gauravstomar.blogspot.fr/2011/08/prepopulate-sqlite-in-phonegap.html
適切な database.db と 000...001.db を必ずコピーして貼り付けてください (適切なものは、/Caches と /Caches/file_0 フォルダー、または /WebKit と /WebKit/file__0 のいずれかにあります。覚えていません)。うまくいかない場合は、いずれかを試してください)。次に、それらをリソースのプロジェクト ディレクトリに貼り付けました。
次の 2 行を変更します。
NSString *masterPath = [libraryDir stringByAppendingPathComponent:@"WebKit/Databases/"];
NSString *databasePath = [libraryDir stringByAppendingPathComponent:@"WebKit/Databases/file__0/"];
次の行で:
NSString *masterPath = [libraryDir stringByAppendingPathComponent:@"Caches/"];
NSString *databasePath = [libraryDir stringByAppendingPathComponent:@"Caches/file__0/"];
シミュレーター/デバイスからアプリケーションを削除します。そして、実行します..動作します。データベースは事前に入力されています。
データベースを Resources フォルダーに配置し、このコードを に配置しましたMainViewController.m
。
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *databasePath = [documentsDirectory stringByAppendingPathComponent:@"this.db"];
if ([fileManager fileExistsAtPath:databasePath] == NO) {
NSString *resourcePath = [[NSBundle mainBundle] pathForResource:@"this" ofType:@"db"];
[fileManager copyItemAtPath:resourcePath toPath:databasePath error:&error];
}
以下はブログ投稿からのものですが、引用する前にリンクを投稿したことで少し非難されたので. 最後に URL を掲載しますが、完全な説明とフォローアップのコメントについては、そこにアクセスすることをお勧めします。このヘルプは、Scott Buckel の功績によるものです。
1) このプラグインを使用します: https://github.com/chbrody/Cordova-SQLitePlugin/
2) sqlite db ファイルを PhoneGap の /assets フォルダーにコピーします。
3) 次に、http: //gauravstomar.blogspot.com/2011/08/prepopulate-sqlite-in-phonegap.htmlの手順に従って、ファイルをネイティブ ストレージにコピーします。this.copy("Databases.db","/data/data/"+pName+"/app_database/"); を変更します。
3a) Databases.db の代わりに、データベース ファイル名を使用します。3b) app_database の代わりに、"databases" を使用します。 3c) /assets からファイルを削除することをお勧めします。これは、重複して不要になったためです。私のアプリは、必要なサイズの 2 倍になりました。
4) (このステップが必要かどうかはわかりません。私はその日オフィスを出る予定です)。SQLitePlugin.java を編集
4a) 176 行目、if ステートメントが常に実行されるように 1==1 を編集しました。179 行目 this.setStorage(appPackage, false); を変更しました。this.setStorage(appPackage、true);
5) 次に、次のコマンドを使用して DB を開き、他の PhoneGap データベースとして使用できます。
5a) var db = window.sqlitePlugin.openDatabase("[拡張子を含む完全なデータベース名]", "1.0", "PhoneGap デモ", 200000);