私は現在、自分の sqllite データベースを自分のアプリに含めていますが、アプリケーションのライフ サイクルの中でテーブルを作成する (またはテーブルが存在することを確認する) のに最適な時期はいつなのか疑問に思っています。
私が読んだほとんどの例では、著者は次のようなことをしています。
- (void)viewDidLoad
{
NSString *docsDir;
NSArray *dirPaths;
// Get the documents directory
dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];
// Build the path to the database file
databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent: @"contacts.db"]];
NSFileManager *filemgr = [NSFileManager defaultManager];
if ([filemgr fileExistsAtPath: databasePath ] == NO)
{
const char *dbpath = [databasePath UTF8String];
if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
{
char *errMsg;
const char *sql_stmt = "CREATE TABLE IF NOT EXISTS CONTACTS (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, ADDRESS TEXT, PHONE TEXT)";
if (sqlite3_exec(contactDB, sql_stmt, NULL, NULL, &errMsg) != SQLITE_OK)
{
status.text = @"Failed to create table";
}
sqlite3_close(contactDB);
} else {
status.text = @"Failed to open/create database";
}
}
[filemgr release];
[super viewDidLoad];
}
しかし、viewDidLoad がそれを作成する基本的な場所である場合、私はさまよっています。アプリの初期化中に作成した方がよいでしょうか?
私の現在のコードは問題なく動作するので、これはベスト プラクティスとは何かという問題です ^^
ご意見ありがとうございます
ジェイソン