2012-02-14 52 views
0

我已经开发了一个应用程序,我用我的基于标签的应用程序和当我创建数据库对象在我的sq-lite数据库包装(BWDB - 由比尔W包装.....)第一个视图控制器使用此代码sqlite数据库包装目标c对象

- (DBAccess *) loadDBAccessDatabase { 
    // NSLog(@"%s", __FUNCTION__); 
    if (!_dbObject) { 

     NSString * _dbFileName = @"turfnutritiontool_ver_one.db"; 
     _dbObject = [[DBAccess alloc] initWithSSDBAccessFilename:_dbFileName]; 
    } 
    // Check Point 
    [TestFlight passCheckpoint:@"LOAD_DATABASE"]; 
    return _dbObject; 
} 

,并在此视图控制器适用于我,但如果我创建一个新的对象,当第二视图控制器负载,以便对数据的新的数据库对象做工精细抓取,但我不能插入或更新数据库它说db是锁定所以告诉我如何我可以管理所有的应用程序只有一个数据库对象,并发送到其他视图控制器,使其工作正常,

回答

0

因此,您正在创建包含此代码的类的两个对象?如果是的话,最简单的方法可能是让_dbObject成员静态的,在

static DBAccess *_dbObject; 

的进一步深入,可以考虑建立数据库的基础参考一单。苹果在Mac OS X Developer Library提供了可可单例的介绍。

+0

非常感谢! – Retro 2012-02-14 12:15:10

+0

非常感谢!还有一件事,我阅读关于单身类http://iphone.galloway.me.uk/iphone-sdktutorials/singleton-classes/的教程,我不明白应该使用单例方法进入包装类吗? – Retro 2012-02-14 12:27:46

+0

对于单例,您可以创建另一个类(在这种情况下,基本上是DBAccess指针的一个包装)。在你链接的示例中,'someProperty'可以是'_dbObject'。然后,您可以在需要到达数据库的任何地方使用此类。如果您有不同的类访问数据库(而不是一个类的多个对象),这非常有用。你有单身人士,并且控制器可以进出,而不需要进一步思考数据库初始化。另一方面,如果你所有的视图控制器都是同一个类的实例,那么静态变量就足够了。 – Peter 2012-02-14 13:30:29