在iphone中全局定义sqlite3数据库

问题描述

| 有没有一种方法可以全局定义sqlite3数据库。我搜索了很多地方,但大多数地方都使用单例或外部方法来定义全局变量。我都尝试过,但徒劳无功。 我实际上试图在许多文件上使用sqlite3 * database创建,插入或选择。我真的需要知道在哪里以及如何创建全局变量。 我在appDelegate中定义我的sqlite3数据库,并检查数据库的打开或关闭连接。如何从appdelegate调用sqlite3 * database到其他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];

       }
    

解决方法

        
@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
 }
希望能帮助到你。     ,        将属性添加到AppDelegate.h
@property (nonatomic,readonly) sqlite3 *database;
在AppDelegate.m中合成
@synthesize database;
并通过以下代码在您的viewcontollers / nsobjects中使用它:
sqlite3 *database = [(AppDelegate*)[UIApplication sharedApplication].delegate database];
    ,        您最好需要为sqlite db创建及其功能实现一个单独的类,并创建一个实例化该类对象的类级别方法,并在其他控制器中使用该对象访问或修改数据库。