在不同的类中访问sqlite3变量

时间:2012-06-01 01:49:22

标签: objective-c database sqlite global-variables

我的项目中有多个班级。应用程序启动时,将在应用程序委托中创建数据库。我需要在另一个类中访问这个数据库,所以我在另一个类中创建了一个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)//错误:请求的属性表达式的地址

但这些都不起作用。

1 个答案:

答案 0 :(得分:1)

将数据库实例变量放在app delegate中或使用“singleton pattern”。

(但我认为你可能会对“数据库”操作数的性质感到困惑。它在方法声明中声明为sqlite3 **,应该是sqlite3 *指针的地址。尝试通过parm被挫败了,因为Objective-C类的字段通常不是公共的,你不能获取属性的地址。对于你的情况,最简单的(虽然有点粗糙)方法是有一个从Delegate类存储它的任何地方返回sqlite3 *变量(例如return &mySqlite3Variable)的地址的方法。)