有没有办法可以全局定义sqlite3数据库。我搜索了很多地方,但大多数都处理单例或外部方法来定义全局变量。我试过了两次但是徒劳无功。 我实际上尝试在许多文件上使用sqlite3 *数据库来创建,插入或选择。我真的需要知道在哪里以及如何创建全局变量。 我在appDelegate中定义我的sqlite3数据库并检查数据库的打开或关闭连接。如何从appdelegate调用sqlite3 *数据库到其他viewcontrollers或nsobjects?
/// AppDelegate.h
@interface AppDelegate : NSObject <UIApplicationDelegate> {
sqlite3 *database;
AppDelegate *delegate;
}
/// AppDelegate.m
-(void)checkAndCreateDatabase_2{
NSString *databaseName = @"main.sqlite";
NSArray *documentPaths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
}
答案 0 :(得分:3)
@interface AppDelegate : NSObject <UIApplicationDelegate> {
sqlite3 *database;
//AppDelegate *delegate; // No need to declare this so remove this.
}
@property (nonatomic,retain) sqlite3 *database;
@synthesize database; //Add in AppDelegate.m
//In AnyViewController.m access AppDelegate as follow.
-(void)viewDidLoad
{
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
sqlite3 *database = [appDelegate database]; //Do whatever you want to do with DB
}
希望它有所帮助。
答案 1 :(得分:1)
将属性添加到AppDelegate.h
@property (nonatomic,readonly) sqlite3 *database;
在AppDelegate.m中合成
@synthesize database;
并通过以下代码在viewcontollers / nsobjects中使用它:
sqlite3 *database = [(AppDelegate*)[UIApplication sharedApplication].delegate database];
答案 2 :(得分:1)
您最好为sqlite数据库创建及其函数实现一个单独的类,创建一个类级别方法,实例化该类的对象,并在其他控制器中使用此对象来访问或修改数据库。