0

既存のデータベース ファイルがあります。この db ファイルをプロジェクトで使用したいと考えています。このファイルを Mac の app フォルダーに配置し、Xcode にドラッグしました。これで、ファイルが存在するかどうかを確認するコードを作成できました。しかし、それは FALSE 例外をスローしています。

 bool databaseAlreadyExists = [[NSFileManager defaultManager] fileExistsAtPath:@"school.db"];

既存のdbファイルの使い方を教えてください。

ありがとう

4

4 に答える 4

2

でパスを取得してみてください

NSString *databasePath = [[NSBundle mainBundle] pathForResource:@"school" ofType:@"db"];

スイフトの場合:

let dbPath = Bundle.main.path(forResource: "school", ofType: "db")
于 2012-10-01T12:00:16.717 に答える
0

データベースを書き込み可能にする必要があるかどうかによって異なります。

これを行うだけで、データベースにアクセスできます。

    NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"mydb.sqlite"];

しかし、書き込みができるように別のディレクトリ (Documents ディレクトリなど) にコピーした場合は、次のようにしてパスを取得する必要があります。

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"mydb.sqlite"];
于 2012-10-01T12:08:59.417 に答える
0

プロジェクトで Core Data を使用していると思いますよね。その場合は、 Apple によるiPhone Core Data Recipesサンプル プロジェクトをご覧ください。Classes/ RecipesAppDelegate.m には、必要なことを達成するためのサンプル コードがあります。

Ray Wenderlich のサイトに、プリロードに関する優れたチュートリアルがあります。Core Data Recipes の例で示した方法でプリロードされたデータベースを出荷することは、Apple が最も望ましい方法ではありません。より洗練されたアプローチについては、提供されているチュートリアルをご覧ください。

于 2012-10-01T11:52:52.700 に答える
0

DB のタイプ (MySQL、SQLITE など) がわからない場合は、データベースにアクセスするための iOS の適切なライブラリ/ラッパーを見つけることをお勧めします。例として。SQLITEに非常に適している場合は FMBD。

于 2012-10-01T11:57:47.743 に答える