0

iPhoneアプリにはdb.sqliteというデータベースを使用しています。正しいパスを見つけるために、次のコードを使用します。

- (NSString *) filePath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
return [[paths objectAtIndex:0] stringByAppendingPathComponent:@"db.sqlite"];

}

これにより、次のパスが返されます。

/Users/*******/Library/Application Support/iPhone Simulator/6.0/Applications/E1D5F78D-7FD2-45D7-A3DE-B53BCBB9BDC5/Documents/db.sqlite

ただし、このパスのデータベースは新しく作成され、空になっています。正しいパスを文字列として返す場合はうまく機能しますが、iPhoneでは機能しないと思います。

return @"/Users/*******/workspace/xcode/MyApp/MyApp/db.sqlite";

私は何を間違えたのですか、それとも忘れましたか?

4

1 に答える 1

1

投稿したコードは、アプリのドキュメントサンドボックスディレクトリからファイルを取得するためのものです。必要なパスに基づいて、アプリのリソースバンドルからファイルを取得する必要があります。

NSString *path = [[NSBundle mainBundle] pathForResource:@"db" ofType:@"sqlite"];

db.sqliteファイルはアプリバンドル内で読み取り専用であることに注意してください。このデータベースファイルに書き込もうとしないでください。

データベースに書き込む必要がある場合は、最初にファイルを書き込み可能な場所(Documentsディレクトリなど)にコピーする必要があります。次に、そのファイルのコピーをすべての読み取りと書き込みに使用します。

于 2013-01-19T17:32:49.197 に答える