2012-06-01 32 views
0

我在我的項目中有多個類。當應用程序啓動時,應用程序委託中會創建一個數據庫。我需要在另一個類中訪問這個數據庫,所以我在這個其他類中創建了一個應用程序委託的對象(稱爲Delegate)。通常情況下,打開數據庫,我會做這樣的事情在不同的類中訪問sqlite3變量

if(sqlite3_open([Delegate.databasePath UTF8String], &database) == SQLITE_OK) 

然而,在這種情況下,變量數據庫是全球性的,而不是在它的父類。在這種情況下如何打開我的數據庫?我曾嘗試

if(sqlite3_open([Delegate.databasePath UTF8String], &Delegate->database) == SQLITE_OK) //error: instance variable database is protected 

if (sqlite3_open([Delegate.databasePath UTF8String], &Delegate.database) == SQLITE_OK) //Error: Address of property expression requested

但所有這些工作。

回答

1

將您的數據庫實例變量放入應用程序委託或使用「單例模式」。 (但是我收集你可能會被「數據庫」操作數的性質弄糊塗了,它在方法聲明中聲明爲sqlite3 **,並且應該是sqlite3 *指針的地址,你嘗試傳遞參數parm會被阻止因爲Objective-C類的字段通常不是公共的,並且你不能獲取屬性的地址。對於你的情況,最簡單(儘管有點粗糙)的方法是有一個方法返回sqlite3 *變量(例如,return &mySqlite3Variable)來自您的委託類別存儲它的位置。)