0

我的项目中有多个课程。当应用程序启动时,会在应用程序委托中创建一个数据库。我需要在另一个类中访问这个数据库,所以我在这个另一个类中创建了一个应用程序委托的对象(称为委托)。通常,要打开数据库,我会做类似的事情

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

但这些都不起作用。

4

1 回答 1

1

将您的数据库实例变量放在应用程序委托中或使用“单例模式”。

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

于 2012-06-01T02:25:58.897 回答