Objective c 在不同的类中访问sqlite3变量

Objective c 在不同的类中访问sqlite3变量,objective-c,database,sqlite,global-variables,Objective C,Database,Sqlite,Global Variables,我的项目中有多个类。当应用程序启动时,将在应用程序委托中创建一个数据库。我需要在另一个类中访问此数据库,因此我在另一个类中创建了app Delegate的对象(称为Delegate)。通常,要打开数据库,我将执行以下操作 if(sqlite3_open([Delegate.databasePath UTF8String], &database) == SQLITE_OK) 但是,在这种情况下,变量数据库是全局的,不在其父类中。在这种情况下,如何打开数据库?我试过了 if(sqlite

我的项目中有多个类。当应用程序启动时,将在应用程序委托中创建一个数据库。我需要在另一个类中访问此数据库,因此我在另一个类中创建了app Delegate的对象(称为Delegate)。通常,要打开数据库,我将执行以下操作

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)//错误:请求的属性表达式的地址


但是这些都不起作用。

要么将数据库实例变量放入应用程序委托中,要么使用“单例模式”

(但我想你可能会对“数据库”的性质感到困惑)操作数。它在方法声明中声明为
sqlite3**
,应该是
sqlite3*
指针的地址。传递parm的尝试被阻止,因为Objective-C类的字段通常不是公共的,并且不能获取属性的地址。最简单的(尽管有些粗糙)对于您的案例来说,解决这个问题的方法是使用一个方法,从代理类存储变量的任何位置返回
sqlite3*
变量的地址(例如,
return&mySqlite3Variable