2012-02-14 47 views
0

我已經開發了一個應用程序,我用我的基於標籤的應用程序和當我創建數據庫對象在我的sq-lite數據庫包裝(BWDB - 由比爾W包裝.....)第一個視圖控制器使用此代碼sqlite數據庫包裝目標c對象

- (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是鎖定所以告訴我如何我可以管理所有的應用程序只有一個數據庫對象,併發送到其他視圖控制器,使其工作正常,

回答

0

因此,您正在創建包含此代碼的類的兩個對象?如果是的話,最簡單的方法可能是讓_dbObject成員靜態的,在

static DBAccess *_dbObject; 

的進一步深入,可以考慮建立數據庫的基礎參考一單。蘋果在Mac OS X Developer Library提供了可可單例的介紹。

+0

非常感謝! – Retro 2012-02-14 12:15:10

+0

非常感謝!還有一件事,我閱讀關於單身類http://iphone.galloway.me.uk/iphone-sdktutorials/singleton-classes/的教程,我不明白應該使用單例方法進入包裝類嗎? – Retro 2012-02-14 12:27:46

+0

對於單例,您可以創建另一個類(在這種情況下,基本上是DBAccess指針的一個包裝)。在你鏈接的示例中,'someProperty'可以是'_dbObject'。然後,您可以在需要到達數據庫的任何地方使用此類。如果您有不同的類訪問數據庫(而不是一個類的多個對象),這非常有用。你有單身人士,並且控制器可以進出,而不需要進一步思考數據庫初始化。另一方面,如果你所有的視圖控制器都是同一個類的實例,那麼靜態變量就足夠了。 – Peter 2012-02-14 13:30:29