2012-02-14 14 views
0

私はアプリケーションを開発しました。私はタブベースのアプリケーション用にsq-liteデータベースラッパー(BWDB - Wrapper ... BWDB)を使用しました。最初のビューコントローラこのコード目的のCオブジェクト用のsqliteデータベースラッパー

- (DBAccess *) loadDBAccessDatabase { 
    // NSLog(@"%s", __FUNCTION__); 
    if (!_dbObject) { 

     NSString * _dbFileName = @"turfnutritiontool_ver_one.db"; 
     _dbObject = [[DBAccess alloc] initWithSSDBAccessFilename:_dbFileName]; 
    } 
    // Check Point 
    [TestFlight passCheckpoint:@"LOAD_DATABASE"]; 
    return _dbObject; 
} 

を使用して、データ用の新しいDBオブジェクトの作業罰金がフェッチが、私がすることができませんので、私はときに、第2のビューコントローラの負荷新しいオブジェクトを作成する場合には、このビューコントローラに私のために動作しますが、データベースを挿入または更新するとdbがロックされているので、すべてのアプリケーションで1つのdbオブジェクトしか管理できず、別のビューコントローラに送信して正常に動作するように伝えてください。

答えて

0

このコードを含むクラスの2つのオブジェクトを作成していますか?その場合、最も簡単な方法は、

static DBAccess *_dbObject; 

はさらに行くには、データベースベース基準のシングルトンを作成することを検討可能性があるので、_dbObjectメンバーは静的にするかもしれません。 Cocoaのシングルトンの紹介はAppleによってMac OS X Developer Libraryで提供されています。

+0

ありがとうございました! – Retro

+0

ありがとうございます!一つのこと、私はシングルトンクラスhttp://iphone.galloway.me.uk/iphone-sdktutorials/singleton-classes/についてのチュートリアルを読んで、私は理解していないラッパークラスにそのシングルトンメソッドを使用する必要がありますか? – Retro

+0

シングルトンを使用すると、別のクラス(この場合は基本的にDBAccessポインタのラッパー)を作成します。あなたがリンクしたサンプルでは、​​ 'someProperty'は' _dbObject'です。このクラスは、データベースにアクセスする必要がある場合はいつでも使用できます。これは、(クラスの複数のオブジェクトではなく)データベースにアクセスする異なるクラスを持つ場合に便利です。あなたはシングルトンを持っています。コントローラーは、データベースの初期化についてさらに検討する必要はありません。一方、すべてのView Controllerが同じクラスのインスタンスである場合は、静的変数で十分です。 – Peter

関連する問題