Определите базу данных sqlite3 глобально в iphone - PullRequest
2 голосов
/ 10 июня 2011

Есть ли способ определить глобальную базу данных sqlite3. Я искал много мест, но большинство из них имеют дело с одноэлементным или внешним подходом для определения глобальных переменных. Я пробовал оба, но тщетно. Я на самом деле пытаюсь использовать базу данных sqlite3 * на многих файлах для создания, вставки или выбора. Мне действительно нужно знать, где и как я могу создать глобальную переменную. Я определяю свою базу данных sqlite3 в appDelegate и проверяю открытое или закрытое соединение базы данных. Как я могу вызвать базу данных sqlite3 * из appdelegate в другие 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];

       }

Ответы [ 3 ]

3 голосов
/ 10 июня 2011
@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 голос
/ 10 июня 2011

Вам лучше реализовать отдельный класс для создания базы данных sqlite и для его функций, создать метод уровня класса, который создает экземпляр объекта этого класса, и использовать этот объект в других ваших контроллерах для доступа или изменения баз данных.

1 голос
/ 10 июня 2011

Добавить свойство в AppDelegate.h

@property (nonatomic,readonly) sqlite3 *database;

, синтезировать в AppDelegate.m

@synthesize database;

и использовать его в ваших viewcontollers / nsobjects через этот код:

sqlite3 *database = [(AppDelegate*)[UIApplication sharedApplication].delegate database];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...